專案遇見了一個錯誤。下載報表時資料量太大,檔案達到了300多M,這時出現了“頁面未找到”的錯誤,開始以為是服務器檔案不存在,後來看了下確實有的,然後嘗試了多次,發現小檔案是可以下載的。於是確定是檔案太大的原因。以下是小編為大家搜尋整理的'php readfile下載大檔案失敗的解決方法,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!
具體如下:
大檔案有200多M,只下載了200K就提示下載完成,且不報錯。
原因是PHP記憶體有限制,需要改為按塊下載,就是把大檔案切塊後逐塊下載。
?
123456789101112131415161718192021 | if ( file_exists ( $file )) { if (FALSE!== ( $handler = fopen ( $file , 'r' ))) { header( 'Content-Description: File Transfer' ); header( 'Content-Type: application/octet-stream' ); header( 'Content-Disposition: attachment; filename=' . basename ( $file )); header( 'Content-Transfer-Encoding: chunked' ); //changed to chunked header( 'Expires: 0' ); header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' ); header( 'Pragma: public' ); //header('Content-Length: ' . filesize($file)); //Remove //Send the content in chunks while (false !== ( $chunk = fread ( $handler ,4096))) { echo $chunk ; } } exit ; } echo " Content error
" ; |
PHP實現遠端下載檔案到本地
PHP檔案下載類
php做下載檔案的實現程式碼及檔名中亂碼解決方法
php使瀏覽器直接下載pdf檔案的方法
php實現的支援斷點續傳的檔案下載類
php中強制下載檔案的程式碼(解決了IE下中文檔名亂碼問題)b