2008-09-22 4 views
5

У меня есть скрипт, который получает зашифрованное URL и от этого генерирует загрузку, наиболее критик вол сценария заключается в следующем:Не удается загрузить файл в IE7, но нет никаких проблем в Firefox, Chrome и т. Д.?

$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, я видел проблемы, связанные с к «no-cache» заголовкам, но я ничего не посылаю, они говорят о символах utf-8, но нет utf-8 characters (а в $ filename нет ни одного символа utf-8).

+0

«Это работает, за исключением IE» совсем не помогает. Как это не работает? Есть ли сообщение об ошибке? Тайм-аут? Отображает ли содержимое файла? Загружает ли она неправильную вещь? – Jim 2008-09-22 20:39:40

+0

таймаут в основном, он выталкивает окно загрузки, но никогда не продвигается, после купола минут он тайм-аутов говорит: «Internet Explorer не может загрузить FileName из WebServer» – levhita 2008-09-22 21:09:37

ответ

3

This site имеет проблему, похожую на вашу в IE6. Подводя итог:

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

Перед session_start(), добавить «session_cache_limiter („Нет“);», или посмотреть, что функции и настройки ограничителя в зависимости от обстоятельств (вероятно, «частный» ближе к метки).

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

+0

Да, есть session_start(), прежде всего, я просто разместил этот код, потому что очень длинный код. – levhita 2008-09-22 20:57:55

0

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

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

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

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