Как вы динамически указываете путь к папке удаленного сервера в С#?

Хорошо, после огромного количества поисков в Google и попыток разных вещей, это, вероятно, что-то простое, что я испортил.

В основном то, что я делаю, это синтаксический анализ productID из URL-адреса и добавление XL.jpg в конец. Например, допустим, что идентификатор продукта 1234, программа будет искать 1234XL.jpg в папке, указанной в PathToFolder (C://LiveSite/img/XL/).

Все работает, как и планировалось, до части пути. Он анализирует URL-адрес, добавляет XL.jpg в конец и даже следует по указанному мной пути, но я получаю сообщение об ошибке: «Адрес не был понят. Firefox не знает, как открыть этот адрес, потому что протокол (c ) не связан ни с одной программой." В других браузерах просто пустое окно.

Вот что отображается в моем браузере: c://LiveSite/img/XL/1234XL.jpg

protected void OpenImg_Click(object sender, EventArgs e)
                {
                    int i = 0;

                    string PathToFolder = "C://LiveSite/img/XL/";

                    var dirInfo = new DirectoryInfo(PathToFolder);
                    string FileName = Variables.param + "XL.jpg";
                    var foundFiles = dirInfo.GetFiles(FileName);

                    if (foundFiles.Length == 1)
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "openFoundImage", "window.open('" + PathToFolder + foundFiles[i].Name + "');", true);
                    }
                }
            }
       }

Что я напутал в том, что он не будет идти к серверу? Есть ли что-то, что я должен использовать вместо C://? Я пробовал переворачивать косые черты по-другому и использовать C:/ничего не получалось.

Заранее спасибо за помощь.

Редактировать:

Извините за путаницу. Изображения не находятся ни на моем компьютере, ни в проекте. Они находятся на удаленном сервере, если это имеет значение, на сервере sql. Я не уверен, правильно ли я запускаю каталог, если хочу подключиться к серверу.

На сервере я хочу связать его с путем к папке в C://LiveSite/img/XL/. Теперь я понимаю, что такая ссылка откроется, только если я буду делать это на этом сервере. Итак, как мне сделать ссылку на эту папку из интернет-браузера? Могу ли я вообще использовать написанный мной фрагмент кода или мне придется делать это совершенно по-новому?

Это веб-приложение asp.net


person JavaTheScript    schedule 07.06.2013    source источник
comment
вы не сказали о типе вашего приложения. это веб-приложение asp.net? если это веб-приложение, где находятся ваши изображения? внутри корневой папки или подпапки вашего веб-сайта? или другой виртуальный каталог?   -  person Damith    schedule 07.06.2013
comment
да, это веб-приложение asp.net. мои изображения расположены на сервере компании. нет изображения не находятся в проекте.   -  person JavaTheScript    schedule 07.06.2013
comment
Вы не можете получить доступ к изображениям с живого сайта компании? нравится www.yourcompany.com/img/XL/1234XL.jpg?   -  person Damith    schedule 07.06.2013
comment
Вы могли бы так подумать, но компания использует несколько названий сайтов и тысячи продуктов, поэтому мне потребовалась бы целая вечность, чтобы сделать это. Вот почему это делается динамически. Когда клиент выбирает продукт, он должен проанализировать этот конкретный идентификатор продукта, а затем найти изображение в папке на сервере с тем же именем.   -  person JavaTheScript    schedule 07.06.2013
comment
если вы ищете файлы в папках сервера, это будет занимать больше времени и ресурсов. вы не можете создать таблицу с идентификатором продукта и соответствующими путями/URL-адресами изображений и брать оттуда по запросу? вы можете обновлять эту таблицу ежедневно или ежечасно, если ваш сайт быстро меняется.   -  person Damith    schedule 07.06.2013
comment
@Damith хорошо, я сделал предложение иметь www.yourcompany.com/img/XL/1234XL.jpg - проблема теперь в том, что я получаю сообщение об ошибке, в котором говорится, что форматы URI не поддерживаются. Все, что я сделал, это заменил вместо моего PathToFolder URL-адрес. Что я делаю неправильно?   -  person JavaTheScript    schedule 21.06.2013


Ответы (2)


Если C://LiveSite/ является корневым каталогом вашего сайта, вы можете использовать это

protected void OpenImg_Click(object sender, EventArgs e)
{
    int i = 0;

    string PathToFolder = "C://LiveSite/img/XL/";

    string webRootPathToFolder = ResolveUrl("~/img/XL/");
    var dirInfo = new DirectoryInfo(PathToFolder);
    string FileName = Variables.param + "XL.jpg";
    var foundFiles = dirInfo.GetFiles(FileName);

    if (foundFiles.Length == 1)
    {
        ClientScript.RegisterStartupScript(this.GetType(), "openFoundImage", "window.open('" + webRootPathToFolder + foundFiles[i].Name + "');", true);
    }
}
person Yograj Gupta    schedule 07.06.2013

Попробуйте что-то вроде этого:

file:///c:/path/to/the%20file.txt

Если вам нужно... открытие локальных файлов в браузере не является широко используемой техникой.

Это будет работать только на вашем компьютере, так сказать. Эта логика никак не сработает, если браузер не работает на той же машине, что и веб-сайт.

Вам следует рассмотреть решение, в котором сервер отправляет содержимое файла в браузер в виде byte[]. Здесь есть пример.

person Klaus Byskov Pedersen    schedule 07.06.2013