ホームページ > バックエンド開発 > PHPチュートリアル > PHP で「header()」を使用してファイルのダウンロードを強制し、ブラウザの表示の問題を回避するにはどうすればよいですか?

PHP で「header()」を使用してファイルのダウンロードを強制し、ブラウザの表示の問題を回避するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-03 06:36:12
オリジナル
500 人が閲覧しました

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. Content-Type: 正しいファイルダウンロードのコンテンツタイプは、代わりに「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 で動作することが確認されています。

以上がPHP で「header()」を使用してファイルのダウンロードを強制し、ブラウザの表示の問題を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート