ホームページ >バックエンド開発 >PHPチュートリアル >PHP で「header()」関数を使用してファイルを強制的にダウンロードするにはどうすればよいですか?

PHP で「header()」関数を使用してファイルを強制的にダウンロードするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 21:10:12998ブラウズ

How Can I Force File Downloads in PHP Using the `header()` Function?

PHP で header() を使用してファイルを強制的にダウンロードする

ユーザーがサーバーからファイルをダウンロードできるようにするには、header() を利用できます。関数。ただし、既存の例で問題が発生した場合は、この記事で解決策を提供します。

試行したコードには次の重要なヘッダーが含まれていません:

  • Content-Type を指定しています。ファイル タイプ (例: image/png)
  • ファイルを表示するのではなくダウンロードする必要があることを示す Content-Dispositionブラウザ
  • ファイル サイズを示す Content-Length

動作するはずの修正コード スニペットを次に示します:

$size = filesize("Image.png");

header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="Image.png"');
header('Content-Length: ' . $size);
readfile("Image.png");

トラブルシューティングの手順:

  • ファイル パスが正しく、ファイルが正しいことを確認してください。
  • Web サーバーにファイルへのアクセス許可があることを確認してください。
  • 必要なヘッダーがすべて存在し、正しいことを確認してください。
  • ブラウザ拡張機能またはプラグインを無効にしてみてください。ダウンロードが妨げられる可能性があります。
  • ブラウザのキャッシュと Cookie をクリアしてください。
  • コードをテストしてくださいブラウザ固有の問題を除外するには、複数のブラウザを使用します。

追加の考慮事項:

  • 画像以外のファイルの場合は、Content-Type を設定する必要があります。 (例: 汎用バイナリ ファイルの場合は application/octet-stream)。
  • ファイルをダウンロードされずにブラウザにインラインで表示される場合は、Content-Disposition ヘッダー内の添付ファイルをインラインに置き換えます。
  • 次のヘッダーを追加すると、ファイルがキャッシュされないようにできます:
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。