Не удается загрузить файл в IE7, но в Firefox, Chrome и т. д. проблем нет?
-
02-07-2019 - |
Вопрос
У меня есть сценарий, который получает зашифрованный URL-адрес и на его основе генерирует загрузку. Наиболее критичная часть сценария такова:
$MimeType = new MimeType();
$mimetype = $MimeType->getType($filename);
$basename = basename($filename);
header("Content-type: $mimetype");
header("Content-Disposition: attachment; filename=\"$basename\"");
header('Content-Length: '. filesize($filename));
if ( @readfile($filename)===false ) {
header("HTTP/1.0 500 Internal Server Error");
loadErrorPage('500');
}
Загрузка работает отлично в любом браузере, кроме IE, я видел проблемы, связанные с заголовками без кэша, но я ничего подобного не отправляю, они говорят о символах utf-8, но их нет. utf-8 characters
(и в $filename нет символов utf-8).
Решение
Этот сайт есть проблема, похожая на вашу, в IE6.Обобщить:
session_start() по умолчанию отправляет заголовок управления кэшем, включая «no-store».Internet Explorer берет это слишком буквально, но не имеет соответствующей обработки ошибок для дела, и в результате загадочно взрывается, когда вы пытаетесь сохранить выходную страницу для диска.
Перед SESSION_START () добавьте "SESSION_CACHE_LIMITER ('none');" или посмотрите эту функцию и настройку ограничителя в зависимости от необходимости (вероятно, «частная» ближе к отмечу).
Я понимаю, что опубликованный вами фрагмент кода не включает вызов session_start();
, но я решил поделиться этим возможным решением на случай, если вы его захотите, но просто не показал нам.
Другие советы
Я решил это, отправив заголовки
header('Pragma: public');
header('Cache-Control: max-age=0');
Я не знал, что session_start() отправляет заголовки самостоятельно.
Я нашел ответ в разделе комментариев: Ошибка:Internet Explorer не может загрузить имя файла с веб-сервера
Использовать это
В браузере IE7 Перейдите в интернет-опцию-> Security ---> Пользовательский уровень ---> Загрузки, затем включенная автоматическая подсказка для загрузки файлов.
это решит проблему.
надеюсь, это поможет