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-Disposition を含む必要なヘッダーが存在しない場合、目的の動作が失敗します。
解決策:
この問題を解決するには、Content-Type ヘッダーが「image/png」ではなく「application/octet-stream」に設定されていることを確認します。 " またはその他の MIME タイプ。たとえば、次のヘッダーは一貫してファイルのダウンロードを強制する必要があります:
$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 中国語 Web サイトの他の関連記事を参照してください。