thinkphp 导出 excel 在正式环境中遇到的“net::err_invalid_response”错误
在进行 thinkphp excel 导出操作时,不少开发者发现本地导出没有问题,但在正式环境下却报错“net::err_invalid_response”。针对这一问题,我们对代码逐行分析,最终找到了解决方案。
具体错误原因
导出 excel 的最后一段代码中,使用了 $objwriter->save(‘php://output’) 输出文件。在正式环境中,这个问题是由于 php 版本过高导致的。php 5.6 及以上的版本将 php://output 的行为更改了,导致导出失败。
立即学习“PHP免费学习笔记(深入)”;
解决方案
针对这个问题,需要修改导出文件的输出方式。将 $objwriter->save(‘php://output’) 修改为 $objwriter->save(‘export.xls’),其中 export.xls 是要导出的文件名。
修改后的代码
// 设置活动单指数到第一个表,所以Excel打开这是第一个表 $objPHPExcel->setActiveSheetIndex(0); 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('export.xls'); // 文件保存为 export.xls