- 締切済み
CSVファイルのダウンロードについて
現在開発しているシステムでCSVファイルをダウンロードしたいのですがうまくいきません。どなたか問題の解決できる方お願いします。 現在、CGIでCSVファイルを作成しておきそれをファイルのリンクからダウンロードさせようとしています。 そこで問題になっているのがIEのバージョンが6以前なら普通にダウンロードが出来るのですが、バージョン6だとEXSELがブラウザ内で立ち上がります。 これの回避方法(まずダウンロードをしたいです。)はありませんか? 現在ファイルのヘッダーはこのようにしています。 print "Content-type: application/octet-stream\n" ."Content-Disposition: attachment; filename=aaa.csv\n\n" あと、このCGIプログラムをネスケ、mozillaで開くとソースがブラウザに表示されてしまいます。IEでは問題なく表示されるのにネスケとmozillaはどうしてこんなことが起きるのでしょうか? 少しわかりずらい文章になってしまって申し訳ありません。 どなたかお力を貸してください。お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
print文自体は間違ってないですよ。 ダウンロードはできているので、NPHスクリプト化はしてあることと思います。 NPHスクリプト化すると、通常WWWサーバが出力してくれるヘッダ情報を自分で出力しなければなりません。 Content-typeは出力しているものの、おそらく、Content-typeを出力する前に、ステータスを出力していないのではないでしょうか。 そのため、IE5等では勝手に正常だと思いこみ、ダウンロードを実行してしまうが、ネスケ等では、ステータスが正しく受け取れないため、ソースが出力されている(ように見える)のだと思います。 先のprint文の前に print "HTTP/1.0 200 OK\n"; は入っていますか? そのソースというのも、 Content-type: application/octet-stream Content-Disposition: attachment; filename=aaa.csv の部分だけですよね? 「print」とかは出力されていないと思うので、それはCGIのソースではなく、ヘッダの文字列がそのまま出力されているだけだと思いますが。 もし、本当にCGIのソースがそのまま出力されているのだとしたら、それは何が原因かよくわかりません。 ヒアドキュメントでContent-typeの出力をタブで字下げを行ったりするとソースが出力されてしまうことがあったように記憶していますが。うろ覚えですが。 IE6の件はわかりませんが、理由は同じだと思います。 ステータスがないため、Content-typeを無視して、勝手にファイル名の拡張子に関連付けられているEXCELを起動しているのでしょう。
お礼
どうもありがとうございます。早速やってみます。