Safari добавляет .html для загрузки

У меня есть небольшая функция, которая создает документ .xls (с использованием PHPexcel), а затем отправляет его в php: // output. Затем загрузите его.
Все работает отлично, за исключением того, что сафари на mac os x по какой-то причине добавляет расширение .html.
Таким образом, полученный файл называется report.xls.html. Содержимое в порядке, но это раздражает пользователей.

Как я могу это решить?

Вот часть моего кода:

$filename = 'report.xls'; header('Content-Description: File Transfer'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save('php://output'); 

У меня такая же проблема

Разрешено с выходом; в конце скрипта

 $filename = 'report.xls'; header('Content-Description: File Transfer'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save('php://output'); exit; 

Вы можете попробовать этот заголовок:

 header('Content-type: application/ms-excel'); 

или проверьте http://www.solutionoferror.com/php/phpexcel-not-downloading-in-mobile-safari-81107.asp .

Вы можете использовать код javascript

 <script> window.location.href = "stackoverflow.com/file.xls"; </script> 

Это откроет, что источник и файл xls будут доступны для скачивания.

Для тех, у кого есть эта проблема, браузер делает свое дело. Использование JavaScript работало для меня, но вам нужно добавить html, а не использовать JavaScript для вывода в браузер.

 <!doctype html> <html> <head> <meta charset="UTF-8"> <title>Untitled ocument</title> </head> <body> <script> window.location.href = http://example/file.docx"; </script> </body> </html> 

Если кто-то еще сталкивается с проблемой выше

Измените тип контента как

 header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');