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

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

Linda Hamilton
發布: 2024-12-03 06:36:12
原創
438 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板