PHPでファイルダウンロード

PHPのheader関数で,httpヘッダーのContent-Disposition attachmentを書き出して,クライアントにファイルをダウンロードさせることができる.

header("Content-type: image/jpeg");
header("Content-Disposition: attachment; filename=hoge.jpg");
header("Content-length: " . filesize("./test.jpg"));
readfile("./test.jpg");

ただし,php.iniにあるoutput_bufferingがOFFだと,バイナリがブラウザーに書き出されてしまうので,以下のようにする.

output_buffering = 4096
;output_buffering = Off