ファイルのダウンロードを、PHPからブラウザへ直接吐き出したいとき、
header() でHTTP ヘッダ送信 → readfile() でファイル出力 の流れをとるようだ。
このとき、readfile() の引数にはファイルのパスを突っ込むだけだが、
header() に何をいれるかで、どうも各ブラウザ、特にIE系で、
ダウンロードが発動したりしなかったり画面真っ白になったりばらばら・・。。
そんなとき、、、
↓のサイトを見て解決。
IEの謎の動作とCSVダウンロード - マイサイト開発室
ようは、IEはヘッダー指定を無視してキャッシュつかったりするから、
キャッシュ無効のヘッダーを送ればOK、ってことかしら?
とりあえず以下で私の環境では IE・Sleipnir・Firefox完動☆
header("Cache-Control: public");
header("Pragma: public");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"ファイル名\"");
実際にはもうちょっと色つけて、以下みたいなコードを↓
$path_file = "ファイルパス";
$file_size = filesize($path_file);
header("Cache-Control: public");
header("Pragma: public");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".basename($path_file)."\"");
header("Content-Length: ".$file_size);
IEのバージョンによっても、動作ばらばらっぽいなぁ・・怖い><;
ま、とりあえずw では!
磨者(MAAKIKAKU)
はてなブックマーク










