ブラウザからのファイルダウンロード

http://tkoshima.net/wp/archives/48


IEでだけ、ブラウザ経由のファイルダウンロードがうまくいきませんでした。

ネットで検索して、見つけたのが上記のリンク。

httpヘッダのキャッシュ設定を public にしないと正常にダウンロードできないとのこと。

下記ソースの※の部分を追加したら、IEでも正常に動作するようになりました。

(このソースは、Zend FrameWorkのActionコントローラ内に記述しています)


$fileName は、ダウンロードダイアログに出力するファイル名、

$path は、ダウンロード対象ファイルへのパスになります。


$fileNameは、ブラウザがIEの場合 SJIS に変換しないと日本語が文字化けします。


1
2
3
4
5
6
7
$this->getResponse()
   ->setHeader("Cache-Control", "public") ※
   ->setHeader("Pragma", "public")        ※
   ->setHeader("Content-Type", "application/octet-stream; name=\"$fileName\"")
   ->setHeader("Content-Disposition", "attachment; filename=\"$fileName\"")
   ->setHeader("Content-Length", filesize($path))
   ->setBody(file_get_contents($path));