ユーザーがサーバーからファイルをダウンロードできるようにしようとすると、以下のような一般的な解決策は機能しない可能性があります。
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");
コンソールに正しい内容が表示されているにもかかわらず、保存ダイアログが表示されない場合があります。 headers.
重大なエラーは Content-Type ヘッダーにあります。ファイルのダウンロードの場合、画像/png ではなく、次のようにする必要があります:
header('Content-Type: application/octet-stream');
ファイルのダウンロードのための信頼できるヘッダーのセットは次のとおりです:
$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 ヘッダーを使用してファイルのダウンロードを確実に強制する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。