首頁 >後端開發 >php教程 >如何使用 `header()` 在 PHP 中強制下載檔案並避免瀏覽器顯示問題?

如何使用 `header()` 在 PHP 中強制下載檔案並避免瀏覽器顯示問題?

Linda Hamilton
Linda Hamilton原創
2024-12-03 06:36:12434瀏覽

How Can I Force File Downloads in PHP Using `header()` and Avoid Browser Display Issues?

使用Header() 強制使用PHP 下載檔案

問題:
儘管進行了各種嘗試,但使用者體驗使用PHP 的header() 函數提示從伺服器下載檔案有困難。他們觀察到發送的必要標頭,但在顯示儲存對話方塊時遇到問題。

解決方案:
要成功強製檔案下載,必須正確設定標頭。以下程式碼解決了提出的問題:

$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);

與先前嘗試的主要區別:

  1. 內容類型:正確的文件下載的內容類型是「application/octet-stream」而不是「image/png。」
  2. 檔名引用:檔案名稱必須正確引用,以防止潛在的惡意字元被解釋。
  3. 其他標頭: 程式碼包含「Connection: Keep-Alive」和「Expires: 0」標頭,這有助於確保可靠的連線並防止快取

已驗證的瀏覽器:
此解決方案已被確認可在Firefox 8.0.1、Chrome 15.0.874.121 和 Safari 5.1.1 中運作。

以上是如何使用 `header()` 在 PHP 中強制下載檔案並避免瀏覽器顯示問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn