アトム-サイト
[ アトム-サイト ] - 管理人さんのページです。
feed-icon RSS2.0   feed-icon Atom
[ php ] 一覧へ
ダウンロードできない
管理人さんのブログ 2009-03-25 13:47:29

phpで動的に生成したhtml以外のファイルをダウンロードさせる。
普通のaタグ指定で何の問題もなくいけるのだが、指定のURLを直接ブラウザの『URL入力欄』にいれると、以下のエラーダイアログ。

====
ダウンロードできません。このインターネットのサイトを開くことができませんでした。要求されたサイトが使用できないか、見つけることができません。後でやり直してください。
php ダウンロードできない (.jpg)
====

処理的にaタグ使わずにやりたいので原因究明。
どうやら、ダウンロードする時に一時キャッシュするのがブラウザのセキュリティ的に引っかかるらしい。
header("Cache-Control: public");
↑これが必要との事。

…という事で、
<?php
$buf = "abc,def,ghi";
$len = strlen($buf);

header("Cache-Control: public");
header("Content-type: application/octet-stream");
header("Content-Length: $len");
header("Content-Disposition: attachment; filename=test.csv");

print $buf;

こんな感じで解決。

~~~~

…と思っていたら、javascriptのwindow.open()でcsvを開こうとすると、ウィンドウが開かない(開きつつあるウィンドウが閉じてしまう)。
※aタグやrefreshやURL直接入力ならOK!window.open()時だけ…。しかもIE7だけでした。

これは、クライアント側で設定してもらうしかないみたい。
[インターネットオプション]-[セキュリティタブ]-[レベルのカスタマイズ]にある、『ファイルのダウンロード時に自動的にダイアログを表示』を『有効にする』
↑これで、いけた。

~~~~

更に…。
静的に置いてあるCSVファイルをダウンロードさせる為、URL直接入力したりすると『このコンテンツは、正しく表示されない場合があります。コンテンツがコンテンツのセキュリティ情報と一致しないため、ファイルは制限されました。』←こんな警告(次から次へと全くもぉ…)。
調べ中。

調べてもわかんない。
これは、もぉ置いてあるCSVをPHPで読み込んでheader付けてそのまま出力だな。
この方法で回避できるのを確認。

~~~~

更に更に…。
『ファイルのダウンロード』で保存を選ぶと『ファイルの情報を取得しています』のまま終わらない。
他のタブに切り替えた後の1回だけがダメ(キャンセルしてもう一度やり直せばOK)。

↓同じ現象の報告ありました。
http://ameblo.jp/itboy/entry-10034271288.html

これ、WindowsXPのIE7のバグ。
http://support.microsoft.com/kb/932823/ja
ここの更新プログラムを適応したら直りました。

~~~~

それから…。
SSLな環境で「IE7」だと(Firefoxだと大丈夫)動的生成したPDFが表示されない。
header("Pragma: public");
ヘッダに↑コレ入れたら表示されました。


※ 『php』に繋がる関連物を 視覚的に探しだせるサイトを作ってみました(よろしければクリックしてみてくださいね)。

 コメント記入者:

 リンク元:
(1) : http://www.google.co.jp/search?hl=ja&rlz=1B3GGGL_jaJP291JP291&q=%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E3%80%80php+%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89&btnG=%E6%A4%9C%E7%B4%A2&lr=
(1) : http://www.google.co.jp/search?q=php+Cache-Control+public&hl=ja&lr=&start=10&sa=N
(1) : http://www.google.co.jp/search?q=csv%E3%81%8C%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%80%80php&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
(1) : http://www.google.co.jp/search?hl=ja&q=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89+%E7%B5%82%E3%82%8F%E3%82%89%E3%81%AA%E3%81%84&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&q=php+%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84&lr=&rlz=1R2TRDJ_ja&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&lr=&safe=off&q=IE7+PDF+%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84&revid=1616892988&ei=OxBOStH8DqT66gPz69CDBA&sa=X&oi=revisions_inline&resnum=0&ct=top-revision&cd=1
(1) : http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP258JP258&q=%e3%82%a2%e3%83%88%e3%83%a0%e3%80%80header+pragma
(1) : http://www.google.co.jp/search?hl=ja&q=php+%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84&lr=&rlz=1R2TRDJ_ja&aq=0&oq=php+%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7

 ページ閲覧者数:11人

[ php ] 一覧へ


<< 2009年7月
2009年7月5日(日)
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

 最近の書き込み

掃除ロボ ルンバ
  <2009-07-03 13:20:20>
子供達の誕生日
  <2009-07-02 08:56:35>
家の前の道
  <2009-06-29 21:56:32>
EC-CUBE
  <2009-06-29 21:04:07>
おたまじゃくし
  <2009-06-29 17:38:40>
バーエンド一体型グリップ
  <2009-06-25 11:16:03>
カインズホーム
  <2009-06-22 14:05:31>
ボーリング大会
  <2009-06-22 10:00:09>
ロードバイク専門店
  <2009-06-18 16:25:19>
REST SOAP
  <2009-06-17 15:00:00>


 カテゴリー

おでかけ(66)
サッカー(40)
季節(32)
食べ物(30)
家(26)
映画(26)
旅(25)
DIY(22)
家族(20)
生物(20)
学校(19)
モバイル(19)
地元(19)
Web(17)
ドラマ(17)
通勤(16)
健康(16)
風景(16)
ブログ(14)
Winアプリ(14)
家電(13)
足技(12)
ブラウザ(11)
ゲーム(11)
自転車(10)
Linux(10)
本(10)
php(9)
 ・ REST SOAP
 ・ ダウンロードできない
 ・ zip
 ・ 画像リサイズ
 ・ 正規表現
 ・ session廃棄
 ・ 価格にカンマ
 ・ php.ini
 ・ アップロードデータのサイズ
javascript(9)
ゴルフ(8)
ネットワーク(8)
PCハード(8)
飲み物(8)
会社(8)
感銘映像(6)
税金(5)
空想(5)
VMware(4)
Ruby(4)
データベース(3)
perl(1)