Загрузка с php с заголовками не работает на IE8

Я пытаюсь загрузить файл excel, созданный «на лету» с заголовками php:

$filename = "assets.xls"; header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename=$filename"); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); 

Но это не работает на IE8 (но на каком-то другом компьютере с IE8 работает ??? !!). IE8 пытается загрузить файл export.php вместо assets.xls. Любая идея, почему IE8 делает это?

Попробуйте правильно отформатировать заголовок в соответствии с спецификацией HTTP с пробелом между ними ; и filename и цитаты вокруг имени файла:

 header('Content-Disposition: attachment; filename="' . $filename . '"'); 

Я столкнулся с той же проблемой. И я использую следующий метод для устранения проблемы.

 header("Cache-Control: private"); header("Content-Type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=$filename"); 

У меня точно такая же проблема! Просто он заработал, удалив заголовок Content-Type, поэтому я думаю, что IE8 не играет хорошо с этим типом ..? Не уверен, что это лучшая альтернатива, но это определенно для меня игрок.

У меня такая же проблема. Я добавил следующий заголовок перед заголовком Content-Deposition.

 header("Content-type: text/csv"); header("X-Download-Options: noopen"); header("Content-Disposition: attachment; filename=\"ExcelFileName.csv\""); 

Кажется, это работает для меня. Однако сначала вы должны сохранить файл. Вы не можете открыть сразу.

Попробуй это:

 $filename = 'Excel_Sheet_'.date('Ymd').".xls"; header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=$filename"); header("Content-Type: application/vnd.ms-excel; "); header("Content-Transfer-Encoding: binary"); header('Cache-Control: max-age=0'); ob_clean(); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; 

После попытки сразиться с подобной проблемой на целый день, я обнаружил, что установка

header("Cache-Control: private");

Было лучшим решением. Я уже пытался обеспечить, чтобы Content-Length , Content-Type и Content-Disposition были установлены и правильно отформатированы. Проблема в том, что новые окна и вкладки IE8, похоже, не нравятся загрузке, отправленной через заголовки PHP при первом запуске. При повторной попытке файла после первоначальной попытки он работает нормально (в моих случаях).

После установки Cache-Control как указано выше, все мои ссылки работали без проблем в IE8.