- ベストアンサー
CSVファイルのダウンロード
よろしくお願いします。 現在、ボタンを押すと(=CGI実行)フィルターによりCSVファイルが作成されるという様なものを開発しております。 しかし、その出来上がったCSVファイルをそのままダウンロードしたいと言う要望がありまして、そのCGIに組み込めないものかといろいろ調べております。 概要 (1)ボタンを押す(=CGI実行) (2)フィルターによりCSVファイル作成 (3)作成されたファイルをダウンロード という具合で、教えていただきたいのは(3)です((1)(2)は作成済み)。 実際にはCSVファイルは3つできるのですが、これらをまとめてダウンロード・・・というのはムリですよねぇ(第1希望)。 ムリなら、処理の中で圧縮させます(これぐらいはできます)ので、そのファイルをダウンロードさせるというやり方でも構いません(第2希望)。 実現が難しいようであれば実行結果画面に<a href= ~>で貼り付けます。 webサーバー・・・HP-UX web・・・IE CGI開発言語・・・Perl 開発端末・・・windows2000(Tera Term 使用) 以上、情報等お持ちの方いらっしゃいましたら、 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
CGIにて吐き出すソースのヘッダーを Content-Type: text/csv Content-Disposition: attachment; filename=××.csv にすれば大丈夫です。 ただし、ひとつのファイルのみのダウンロードになります。 作成するCGIの流れは、 1.CSVファイルの作成 2.標準出力に上記ヘッダーを出力 3.標準出力にCSVファイルを出力 となります。 例、hoge.csvをダウンロードさせたい場合 #!/usr/local/bin/perl print "Content-Type: text/csv\n"; print "Content-Disposition: attachment; filename=hoge.csv\n\n"; //----ここでCSV作成---- //できたCSVの中身を aaa,bbb,ccc,ddd とすると print "aaa,bbb,ccc,ddd\n"; これでダウンロードCGIにリンクするとダウンロードダイアログが表示され、hoge.csvをダウンロードできます。
その他の回答 (2)
- EUR
- ベストアンサー率61% (29/47)
たびたびすみません。 扱われるファイルがZIPならば、標準出力に吐き出す際に、バイナリとして吐き出すように注意してください。 逆にCSVならばテキストモードで吐き出してください。 ※参考ですが、ダウンロードさせたいファイルがZIPの場合、クライアント側で拡張子ごとの設定を行っていない限りは、ZIPファイルにリンクを張るだけでダウンロードが行えます。
お礼
ご回答ありがとうございます。 参考になりました。
- steel_gray
- ベストアンサー率66% (1052/1578)
Perlでzipファイルを扱えるモジュールがあります(参考 URL) これで圧縮したら、あとは#1さんの方法に準拠で。(ヘッダーをzipとする。)
お礼
早速のご回答ありがとうございます。 最終的に何をダウンロードするか(csv?,zip?)を確認して対応させていただきたいと思います。
お礼
早速のご回答ありがとうございます。 上記参考に試したところうまくいきました。