Не удается загрузить файл в IE7, но в Firefox, Chrome и т. Д. Проблем нет? - PullRequest
5 голосов
/ 23 сентября 2008

У меня есть скрипт, который получает зашифрованный 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).

Ответы [ 3 ]

8 голосов
/ 23 сентября 2008

Я решил это, отправив заголовки

header('Pragma: public');
header('Cache-Control: max-age=0');

Я не знал, что session_start () отправляет заголовки самостоятельно.

Я нашел ответ в разделе комментариев: Ошибка: Internet Explorer не может загрузить FileName с WebServer

3 голосов
/ 23 сентября 2008

Этот сайт имеет проблему, аналогичную вашей в IE6. Подведем итог:

session_start () по умолчанию отправляет заголовок элемента управления кешем, включая «no-store». Internet Explorer воспринимает это слишком буквально, но не имеет соответствующего обработка ошибок для случая, и в результате загадочно взрывается, когда вы попытаться сохранить страницу вывода на диск.

Перед session_start () добавьте "session_cache_limiter ('none');" или посмотрите, что функционировать и настроить ограничитель соответствующим образом (вероятно, «личное» ближе к знак).

Я понимаю, что фрагмент кода, который вы разместили, не включает в себя вызов session_start();, но я решил поделиться этим возможным решением в случае, если вам позвонили и просто не показали нам.

0 голосов
/ 29 октября 2008

Используйте это

В браузере IE7 зайдите в Интернет -> Безопасность ---> Пользовательский уровень ---> Загрузки затем активировал автоматические запросы на загрузку файлов.

это решит проблему.

надеюсь, это поможет

...