У меня есть небольшая функция, которая создает документ .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');