Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPExcel未在mobile Safari中下载_Php_Mobile Safari_Phpexcel_Xlsx_Force Download - Fatal编程技术网

PHPExcel未在mobile Safari中下载

PHPExcel未在mobile Safari中下载,php,mobile-safari,phpexcel,xlsx,force-download,Php,Mobile Safari,Phpexcel,Xlsx,Force Download,我正在使用它在PHP应用程序中动态生成Excel文件。我使用的是Excel2007格式 当用户访问创建并强制下载Excel文件的URL时,除mobile Safari(iPhone和iPad)外,所有浏览器中的一切都能正常运行 以下是我的标题和readfile方法: header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-dispositi

我正在使用它在PHP应用程序中动态生成Excel文件。我使用的是
Excel2007
格式

当用户访问创建并强制下载Excel文件的URL时,除mobile 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');
当我在mobile Safari中浏览到应该下载.xlsx文件的URL时,我实际上可以看到代表该文件的每个工作表的选项卡,但我看不到这样的实际数据:

此外,我还遇到了另外两种奇怪的行为:

  • 如果我在桌面浏览器上下载此文件并通过电子邮件发送给自己,然后在iOS中使用Mail应用程序打开它,则文件显示正确
  • 如果我从iOS的邮件应用程序中获取附件并导入到Dropbox中,它将无法正常显示(显示与上面的屏幕截图相同)
  • 在Chrome中,文件可以正确下载,并按预期在Excel或甚至数字中打开,但在控制台中我看到以下消息:
    Resource被解释为文档,但使用MIME类型的application/vnd.ms Excel传输:
此外,根据PHPExcel文档,我还尝试了以下方法来代替
readfile

$objWriter->save('php://output');
但是,这会在mobile Safari中产生一个错误,内容如下:

OfficeImportErrorDomain Error 912
为了消除
内容类型
这一问题,我尝试将
内容类型
调整为其他值(例如
application/vnd.ms excel
甚至
application/download
)。不幸的是(尽管并不奇怪),这些也不起作用


非常感谢您的指导。

我使用
->addHeaderLine('Content-Type','application/octet-stream')
。否则Safari将显示错误。 虽然此标题使其可以在浏览器中显示xlsx文件,但不能下载。我还没有找到任何强制mobile Safari下载的解决方案。

headers解决方案有效吗?这似乎是一个非常相似的问题