IE6 «услужливо» добавляет суффикс к загруженному файлу - PullRequest
2 голосов
/ 28 января 2010

Веб-приложение, которое я разрабатывал, позволяет пользователям загружать и скачивать файлы определенного типа, которые должны рассматриваться как непрозрачный большой двоичный объект. Мое приложение поддерживает расширение файла, обычно не используемое для каких-либо других целей, а также указывает, что его MIME Content-Type является application / octet-stream.

Внутренне файл представляет собой простой Zip-архив, содержащий один сжатый файл. Я обнаружил, что IE6, по-видимому, проверяет содержимое файла, определяет, что это Zip-архив, и «услужливо» сохраняет его с дополнительным расширением «.zip». Невероятно!

Как я уже упоминал, этот файл должен быть непрозрачным, и мы не хотим, чтобы пользователи копались в нем - не потому, что он опасен или содержит конфиденциальную информацию или что-то еще, мы просто не хотим путать их. Я предложил добавить содержимое Zip к магическому числу, чтобы IE6 не распознал его, но мой менеджер сказал, что он предпочел бы, чтобы содержимое файла оставалось неизменным, чтобы знающие люди могли переименовать файл и проверить его содержимое в виде zip-архива. при необходимости.

Есть ли какой-нибудь способ сказать IE6 держать свои файлы вне файла? Или какой-то альтернативный подход вообще? (Увы, просто не поддерживать IE6 - это не вариант.)

Кстати, IE7 уважает имя файла, но все равно идентифицирует его как Zip-архив в диалоге загрузки. Это лучше, чем IE6, но все же не идеально.

Ответы [ 3 ]

4 голосов
/ 28 января 2010

Краткий ответ: Добавьте правильные типы MIME на свой веб-сервер, чтобы IE6 не угадывал тип файла.

Длинный ответ :

У моей работы была похожая проблема с файлами Microsoft PowerPoint.

.ppt vs .pps - идентичные файлы с разными расширениями. Мы хотели, чтобы пользователь посмотрел шоу (.pps), но IE6 продолжал менять его на .ppt. Это изменило расширение, потому что на компьютере пользователя была установлена ​​PowerPoint, и он понял, что файл «похож». РРТ. Не понимаю, почему нет .pps.

Проблема, кроме IE6, заключалась в том, что наш веб-сервер (IIS) не знал ни о типах MIME для .pps, ни в .ppt. Поэтому нам пришлось добавить правильные типы MIME, чтобы сервер не доставлял их как «application / octet-stream». Я понимаю, что с помощью «application / octet-stream» IE6 попытается угадать тип MIME.

Итак, мы добавили:

.pps = "application/vnd.ms-powerpoint"
.ppt = "application/vnd.ms-powerpoint"

Теперь он отлично работает с IE6.

Надеюсь, это поможет решить вашу проблему.

1 голос
/ 28 января 2010

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

1 голос
/ 28 января 2010

использовать этот флаг заголовка: Content-Disposition: attachment; имя файла = "yourfilename.extension"

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