Ошибка загрузки файла Internet Explorer при выполнении «readfile» - PHP - PullRequest
2 голосов
/ 20 января 2010

Я только что переместил веб-приложение на сервер Windows, и у меня возникли некоторые проблемы. Одним из них является - Приложение хранит список имен файлов в таблице базы данных. когда файл запрашивается для загрузки, он отправляется на выход, отправляя соответствующие заголовки (в зависимости от типа mime, а затем файл чтения («местоположение документа / имя_файла.extension»);

в Firefox работает нормально, но если я пытаюсь скачать в IE, выдает

IE не может загрузить этот документ с www.mysite.com .. IE не смог откройте этот интернет-сайт. Запрошенный файл либо недоступен, либо не может быть найденным. Пожалуйста, попробуйте позже.

Поскольку на предыдущем сервере (не в Windows) он работал нормально, я попытался напечатать расположение документа, и оно читалось примерно так: C: /Apache/htdocs/FILENAME.ext, и я предполагаю, что это C: / вызывает проблемы в IE. но не в firefox ??

Как мне заставить его работать правильно в IE ??

Спасибо

UPDATE

У меня это работает добавив еще несколько заголовков среди других .. Я думаю, что первые 2 более важны для IE или около того (по крайней мере, сейчас работает для меня:)

header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();

Ответы [ 3 ]

1 голос
/ 16 января 2012

Работает:

if (strstr($_HTTP_USER_AGENT, "MSIE")) { 
    header("Pragma: public"); 
    header("Expires: 0"); 
    header("Cache-Control: doit-revalider, post-check = 0, pré-check = 0"); 
    header("Content-Type: application de téléchargement; name=\"$sFilename\""); 
    header("Content-Length: $iTaille"); 
    header("Content-Disposition: attachment; filename=\"$sFilename\""); 
    header("Content-Transfer-Encoding: binary"); 
} else { 
    header("Content-Type: application de téléchargement; name=\"$sFilename\""); 
    header("Content-Length: $iTaille"); 
    header("Content-Disposition: attachment; filename=\"$sFilename\""); 
} 
0 голосов
/ 20 января 2010

Это случайно не через SSL? Если это так, в MSIE есть целый ряд ошибок, которые могут повлиять на ваше приложение. Попробуйте установить очень короткое время кэширования.

Если он работает в Firefox с использованием того же сервера, то проблема вряд ли связана с путем на сервере. Хотя имейте в виду, что (IME) IIS, по-видимому, туннелирует авторизацию от клиентов MSIE (но не других) в некоторых случаях.

0 голосов
/ 20 января 2010

на этот вопрос уже был дан ответ PHP: принудительная загрузка файлов и IE, еще раз

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