プロが教えるわが家の防犯対策術!

よろしくお願いします。

現在、ボタンを押すと(=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 使用)

以上、情報等お持ちの方いらっしゃいましたら、
よろしくお願いいたします。

A 回答 (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をダウンロードできます。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
上記参考に試したところうまくいきました。

お礼日時:2005/06/15 09:22

たびたびすみません。



扱われるファイルがZIPならば、標準出力に吐き出す際に、バイナリとして吐き出すように注意してください。

逆にCSVならばテキストモードで吐き出してください。

※参考ですが、ダウンロードさせたいファイルがZIPの場合、クライアント側で拡張子ごとの設定を行っていない限りは、ZIPファイルにリンクを張るだけでダウンロードが行えます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考になりました。

お礼日時:2005/06/17 10:15

Perlでzipファイルを扱えるモジュールがあります(参考


URL)
これで圧縮したら、あとは#1さんの方法に準拠で。(ヘッダーをzipとする。)

参考URL:http://www.ss.iij4u.or.jp/~somali/web/_archive_z …
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

最終的に何をダウンロードするか(csv?,zip?)を確認して対応させていただきたいと思います。

お礼日時:2005/06/15 09:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!