0
此問題有各種變種。不幸的是,他們無法幫助我。由於文件格式或文件擴展名無效所導致的Excel無法打開文件 - 通過php下載excel
下面的代碼工作得很好(使用slim)。用戶頭()如果不使用苗條。
$response = $res->withHeader('Content-Description', 'My File transfer')
->withHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
->withHeader('Content-Disposition', 'attachment;filename="'.basename($filePath).'"')
->withHeader('Expires', '0')
->withHeader('Content-Transfer-Encoding', 'binary')
->withHeader('Cache-Control', 'must-revalidate')
->withHeader('Pragma', 'public')
->withHeader('Content-Length', filesize($filePath));
readfile($filePath);
我試着從其他答案ob_start,刷新,結束組合,但沒有任何幫助。
我能夠打開服務器上的文件,但只要我通過上面的代碼下載後試圖打開它,Excel無法打開它 - Excel無法打開文件,因爲文件格式或文件擴展名無效。
但是換行是如何得到文件的?這並不告訴你如何修復代碼,只是如何找到問題 – nogad
對不起,如果答案不清楚。代碼流包括其他相關的php文件。其中一個文件在?>(手動錯誤)之後有一個新行。發送二進制輸出時,這一新行導致問題。它適用於json,因爲json解析器會忽略新行。我必須找到後面有新行的文件?>並將其刪除以解決問題。在很多回答中都提到使用ob_clean,但是這也沒有解決問題。所以我的結論是,代碼修復在這種情況下無法幫助,而且是語法。 –
例如http://stackoverflow.com/questions/11593326/unwanted-new-line-returned-after-ajax-request –