使用PHP 的header() 函數強制下載檔案
當嘗試從您的伺服器向使用者提供檔案下載時,您可能會遇到意想不到的挑戰。在 PHP 中,header() 函數通常用於此目的,但各種程式碼範例常常會產生令人失望的結果。
例如,考慮以下程式碼:
$size = filesize("Image.png"); header('Content-Description: File Transfer'); header('Content-Type: image/png'); header('Content-Disposition: attachment; filename="Image.png"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size); readfile("Image.png");
儘管設定了必要的標頭,包括觸發檔案下載對話框的正確內容處置,所需的行為無法
解決方案:
要解決此問題,請確保Content-Type標頭設定為“application/octet-stream”而不是“image/png” “或任何其他啞劇類型。例如,以下標頭應始終強製文件下載:
$quoted = sprintf('"%s"', addcslashes(basename($file), '"\')); $size = filesize($file); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $quoted); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size);
透過使用這些標頭,您應該能夠可靠地強制從PHP Web 應用程式下載檔案。
以上是如何使用 PHP 的 `header()` 函數可靠地強制檔案下載?的詳細內容。更多資訊請關注PHP中文網其他相關文章!