« WindowsXP へ XAMPP をインストール | メイン | EmEditor で ダイレクトタグジャンプ »

header()→readfile()でファイルのダウンロード

ファイルのダウンロードを、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)

AD:

今日のひと言

呑みいきたい!

PHOTO COLLECTION

【WordPress】Ktai Entryをさくらで使う【メール投稿プラグイン】 : Go-PEARを使ったPEARのインストール : PEAR2.gif EmEditor で ダイレクトタグジャンプ : emeditor.gif WindowsXP へ XAMPP をインストール : xammp.jpg 携帯サイトで文字化け : 070707.gif 動的ページを静的URLで表示させる(PATH_INFO使用) : 400-300.gif PHP4でSmarty、tplファイルしか表示されないのは参照渡しが原因でした : php4%2Bsmarty.gif Dreamwerver で Smarty : Macromedia-Dreamweaver.gif MySQLの自動バックアップ phpMyBackupPro : logo.png さくらのレンタルサーバ へ PHP5.2.2 をインストールした : php.gif ダイナミックディスク⇔ベーシックディスクにはまる・・。 : 294574802_636f6f5e8c.jpg
RSS 2.0(XML)

Add to Google
My Yahoo!に追加
ADD TO Hatena::RSS
Subscribe with livedoor Reader

(→RSS/FEEDとは?

CLUB BASE st.215 最新NEWS