header()でContent-typeを指定して、echoでバイナリデータを書き出す。
echoの前に既に出力があると、うまくいかない。(エラーメッセージが出力された場合など。)
画像ファイルを出力する場合の例
header('Content-type: image/jpeg');
echo file_get_contents($path);
ファイルをダウンロードして保存する場合にファイル名を指定したい場合は、上記に加えてContent-Dispositionを指定する。
指定しない場合はphpのファイル名がそのままダウンロードしたファイル名になる。(拡張子もそのまま.phpなどとなる。)
クライアントがWindowsの場合、ファイル名はSJISでないと文字化けする。
$fileName = mb_convert_encoding('日本語.ext', 'SJIS');
header('Content-Disposition: attachment; filename=' . $fileName );
0 件のコメント:
コメントを投稿