我正在使用PHPExcel在我的PHP应用程序中动态生成Excel文件。我正在使用Excel2007
格式。
当用户访问创建并强制下载Excel文件的网址时,所有浏览器除了移动版Safari (iPhone和iPad)外,一切都很有效。
以下是我的标题和readfile
方法:
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-disposition: attachment; filename=' . $file_name . '.xlsx;');
header('Content-Length: ' . filesize($path_to_file . '.xlsx'));
readfile($path_to_file . '.xlsx');
当我在移动版Safari中浏览应该下载.xlsx文件的URL时,我实际上可以看到代表该文件的每个工作表的选项卡,但我没有看到实际数据:
此外,我还遇到了另外两种奇怪的行为:
Resource interpreted as Document but transferred with MIME type application/vnd.ms-excel:
另外,根据PHPExcel文档,代替readfile
我也尝试过:
$objWriter->save('php://output');
然而,这会在移动版Safari中产生一个错误:
OfficeImportErrorDomain Error 912
通过将Content-type
调整为其他值(例如Content-type
甚至application/vnd.ms-excel
)来消除application/download
作为问题的实验。不幸的是(虽然并不奇怪)那些也不起作用。
非常感谢任何指导。
答案 0 :(得分:0)
我使用->addHeaderLine('Content-Type', 'application/octet-stream')
。否则Safari会显示错误。
虽然这个标题使它在浏览器中显示xlsx文件,而不是下载。我还没有找到任何强制移动Safari下载的解决方案。