2013-06-27 2 views
0

Я разрабатываю веб-страницу, которая должна поддерживать IE10. Мои пользователи должны иметь возможность загрузить установочный файл (.exe), но я обновлю этот файл, чтобы он имел версии. Предположим, что имя файла file.exe но ссылка на файл, какIE10 file url issue

<url>/file.exe?v1.1.21.0 

Здесь, другие браузеры (Chrome, Firefox, IE8, IE9) скачать файл красиво, но IE10 загружает его как файл. 0 (возможно, из-за вопросительного знака в URL-адресе). После загрузки, когда я переименую его как file.exe, он отлично работает как exe-файл, но, конечно, я не могу ожидать его от пользователей. Я также не хочу удалять номер версии из url, потому что тогда он может загрузить старый файл, оставшийся в кеше и т. Д. Есть ли обходной путь для этого, чтобы загрузить файл с соответствующим именем?

ответ

0

Вам необходимо отправить заголовок Content-Disposition, содержащий правильное имя файла.

Content-Disposition: attachment; filename=file.exe

В случае, если вы работаете сервер Apache, посмотрите на это: https://serverfault.com/questions/101948/how-to-send-content-disposition-headers-in-apache-for-files

Update

Вот пример .htaccess:

SetEnvIf Request_URI "^/(file\.exe)$" FILENAME=$1 
Header set "Content-disposition" "attachment; filename=%{FILENAME}e" env=FILENAME 
UnsetEnv FILENAME 

Это будет добавьте только заголовок Content-Disposition в случае, если URI запроса равен /file.exe (измените это на свои нужды), поэтому его можно безопасно добавить, если в каталоге есть другие файлы, которые не должны быть затронуты.

+0

Из того, что я понимаю, это заставляет браузер всплывать окно «Сохранить как», чтобы сохранить файл. Однако в настоящее время, даже если я выбираю параметр «Сохранить как» при загрузке файла, он загружается неправильно. По умолчанию он видит имя файла как ** файл ** и вводит как ** 0 файл ** (из-за «.0» в конце, исходя из номера версии). Даже если я изменю tpye как «Все файлы» (это единственный другой вариант), он по-прежнему загружается как ** file.0 **. – paris

+0

Он не может заставить браузер ничего вообще, он просто сообщает, что он собирается получить, как браузер обрабатывает данные, полностью зависит от браузера. Тем не менее, намерение 'Content'' Content-Disposition', конечно же, должно заставить браузер обрабатывать данные как загрузку, а не встроенные данные, а дополнительный параметр« filename »- это предлагаемое имя файла, конечно, оно снова вверх браузеру, что он делает с этой информацией, однако в основном все браузеры уважают заголовок и используют его по имени файла в URL-адресе, а также IE10. Так что дайте ему попробовать, все работает отлично. – ndm