Как включить передачу полных имен файлов в части URL PATH_INFO - PullRequest
0 голосов
/ 30 ноября 2009

Из-за проблем с заголовком Content-Disposition (кодировка символов, кросс-браузерная поддержка) я решил попробовать другой способ динамического обслуживания файлов.

А именно, я перенаправляю запрос на что-то вроде:

localhost/Download/Page.aspx/filename-without-extension

для того, чтобы браузер забрал имя файла в конце. Я также предоставляю правильный заголовок Content-Type (как определено моим оторванным классом System.Web.MimeMapping).

Теперь для ZIP-файлов это на самом деле работает нормально. Браузер предлагает сохранить файл с расширением .zip. Однако для всех других типов файлов, которые я пробовал (exe, pdf, doc), расширение файла не будет предлагаться, что делает его непригодным для использования большинством пользователей.

Я вижу только один вариант, чтобы обойти это: мне нужно добавить расширение в URL.

localhost/Download/Page.aspx/filename.ext

Но это приводит к ошибке 404 или аналогичной причине, поскольку веб-сервер теперь будет искать файл в подкаталоге Page.aspx, который не существует.

Существует ли какая-либо директива конфигурации, которая позволила бы мне изменить это поведение для определенного подкаталога?

Проект представляет собой стандартный веб-сайт ASP.NET 3.5. Я бы предпочел решение, которое не требует сложной настройки в диспетчере IIS. Лучшим решением для меня была бы директива в самом файле ASPX, хотя вряд ли она существует, потому что это проблема маршрутизации на уровне приложения. Но было бы неплохо установить Web.Config в теге location.

1 Ответ

0 голосов
/ 30 ноября 2009

Я попытался повторить эту ошибку, и у меня заработали zip, word и PDF файлы. Мне интересно, не работает ли он на Word и PDF, потому что эти расширения неправильно зарегистрированы на клиенте. На клиентах Windows это находится в реестре в HKEY_CLASSES_ROOT \ Mime .

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