как связать файлы с сайта - PullRequest
3 голосов
/ 16 мая 2011

На нашем сервере приложений есть папка, используемая для хранения вложений, загруженных клиентом. Эта папка называется Attachments, которой нет на сайте, виртуальной папки для этой папки нет. Интересно, как связать файлы этой папки. Мой код:

string vetting = "c:\\Attachments";
if (Directory.Exists(vetting +"\\"+ "UserName"))
        {

            DirectoryInfo di = new DirectoryInfo(vetting+"\\" + "UserName");
            FileInfo[] rgFiles = di.GetFiles("*.*");
            if (rgFiles.Length > 0)//thumb.db will be a file
            {//list is a div on front end.
                list.InnerHtml += <span class='SubTitle'>Your attachments list:</span>";
                foreach (FileInfo fi in rgFiles)
                {
                    list.InnerHtml += "<br><a href='c:/Attachments/UserName/"+fi.Name+"'>"+fi.Name+"</a>" ;
                }
            }
            else
            {
                list.InnerHtml += "You don't have any attachment yet.";
            }
        }

Но это не работает, всегда идет поиск клиентской части c: / Attachments. Как я могу сделать ссылку на серверную часть c: / Attachments? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 16 мая 2011

Нельзя ссылаться на эти файлы, если они не доступны IIS (вашему веб-серверу).

Предложите 2 варианта для рассмотрения:

  • создайте .ashx (веб-обработчик ASP.NET) для обработки этих запросов. Он будет читать запрошенный документ (из сеанса, файла cookie или строки запроса) по вашему усмотрению. Ваш .InnerHtml может быть <a href='mysite.com/bar.ashx?file=foo'>foo.xlsx</a>. Затем вы можете реализовать проверки авторизации, обфускацию имени файла и многое другое. Прочитайте байты нужного файла и вернитесь к клиенту.

  • создайте виртуальный каталог под вашим сайтом / приложением IIS. Назовите этот vdir «приложения». Предупреждение : это позволяет любому использовать / строить / использовать любую ссылку для просмотра любого вложения. Рассмотрите возможность отключения просмотра каталогов. Убедитесь, что соответствующий пользователь IIS имеет разрешения NTFS для просмотра этого каталога. Реализуйте это, если безопасность не является проблемой / требованием. Ваш .InnerHtml может быть <a href='mysite.com/attachments/foo.xlsx'>foo.xlsx</a>

0 голосов
/ 16 мая 2011

Естественно, это идет к структуре каталогов на стороне клиента, где работает браузер.Он не знает, как настроен сервер.

Вам необходимо предоставить эти ссылки через HTTP, и им нужен адрес, который разрешается в адрес, который знает, как разрешить эти файлы на сервере для доступных ресурсов.по HTTP.

0 голосов
/ 16 мая 2011

C Drive ссылается на локальный компьютер, а не на каталог веб-сервера. Поэтому любой пользователь, щелкнувший ссылку на вашем веб-сайте, будет перенаправлен на свой C drive. Вам нужно будет либо загрузить папку с вложениями в существующий каталог на веб-сервере, либо создать собственный Виртуальный каталог .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...