使用php->header下載檔案最常遇見的問題就是下載回來的檔案損毀,或是格式損毀,最主要的原因就是:UTF-8的BOM字元產生的檔頭錯誤。解決方法就是使用ob_clean()+flush();方法如下: $file = $url; //下載檔案的完整路徑包含檔名(實體路徑) header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); //清除緩存 flush(); readfile($file); exit; 經過神農氏嘗百草精神測試後這支程式確定是不會出錯了,有需要的朋友參考看看 參考資料來源: http://lab.aoetek.com/index.php/2018/04/25/2018042501/ 工作心得撰寫: 徐嘉裕 Neil hsu