使用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;
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;
經過神農氏嘗百草精神測試後這支程式確定是不會出錯了,有需要的朋友參考看看
工作心得撰寫:徐嘉裕 Neil hsu
網路上就只有你的是正解~~~神農兄, 謝謝
回覆刪除