Ошибка загрузки файла Internet Explorer при выполнении "readfile" - PHP


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

Он отлично работает в firefox, но если я попытаюсь загрузить в IE, он выбросит

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

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

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

Спасибо

ОБНОВЛЕНИЕ

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

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

3 answers

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

 0
Author: Flatlin3, 2017-05-23 12:13:27

Это работает:

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\""); 
} 
 1
Author: StefBroox, 2012-01-16 15:43:05

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

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

 0
Author: symcbean, 2010-01-20 11:27:04