|
phpで動的に生成したhtml以外のファイルをダウンロードさせる。
普通のaタグ指定で何の問題もなくいけるのだが、指定のURLを直接ブラウザの『URL入力欄』にいれると、以下のエラーダイアログ。
====
ダウンロードできません。このインターネットのサイトを開くことができませんでした。要求されたサイトが使用できないか、見つけることができません。後でやり直してください。
====
処理的に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』に繋がる関連物を 視覚的に探しだせるサイトを作ってみました(よろしければクリックしてみてくださいね)。
リンク元:
(3) : http://www.google.co.jp/search?hl=ja&q=%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%80%80php%E3%80%80%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84&btnG=%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
(2) : http://www.google.co.jp/search?hl=ja&source=hp&q=php+download+%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84&lr=&aq=0&oq=
(2) : http://www.google.co.jp/search?hl=ja&q=%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89+%22%E3%82%B5%E3%82%A4%E3%83%88%E3%82%92%E9%96%8B%E3%81%8F%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82%22+%E5%9B%9E%E9%81%BF%E6%96%B9%E6%B3%95+%22IE7%22&lr=&aq=f&oq=
(2) : http://www.google.co.jp/search?hl=ja&source=hp&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&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&source=hp&q=PHP%E3%80%80%E5%8B%95%E7%9A%84%E3%80%80%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89&lr=&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&source=hp&q=php+csv%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89+IE8+%E4%B8%8D%E5%85%B7%E5%90%88&lr=&aq=f&oq=
(1) : http://s.luna.tv/search.aspx?client=lunascape&s=0&gl=jp&hl=ja&q=PHP CSV%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%80%80%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84
(1) : http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=Wio&tbo=1&tbs=qdr:y&q=IE7+content-length+%E4%B8%8D%E5%85%B7%E5%90%88&start=10&sa=N
(1) : http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4ADBF_jaJP310JP310&q=Php%ef%bd%9ctxt%ef%bd%9cDL%ef%bd%9c%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84
(1) : http://www.google.co.jp/search?hl=ja&lr=&rlz=1T4ADBR_jaJP278JP278&q=ie7+%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%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA&start=10&sa=N
ページ閲覧者数:27人
[ php ] 一覧へ
|