CSVファイルをダウンロードするには?

[上に] [前に] [次に]
みみぃ 2000/03/31(金) 14:40:11
CGIでフォーム上のデータ(名前や、IDなど)によって、ダウンロードするファイルを替えなければなりません。
ダウンロードするファイルはCSVファイルなのですが、これも、普通のZIPやLZH、EXEなどど同じようにダウンロードのダイアログも出したいのですが、どのような方法が有るでしょうか?

ラウンジを検索したかったのですが、検索しても美味く出来なかったので、同じような質問を捜せませんでした。
もしかしたら、あるのかもしれませんが、その場合はご了承下さい。

コウノトリ 2000/03/31(金) 14:50:43
ダウンロードするファイルを変えるというのは、CGIで動的にファイルを生成するということですか?
それとも、あらかじめ数種類のCSVが存在していて、CGIがその内のどれか1つを選ぶのですか?

みみぃ 2000/03/31(金) 15:04:58
コウノトイリさん、ありがとうございます。

あらかじめ存在するCSVファイルを選択してダウンロードしたいのです。
何か方法はありますか?

a 2000/03/31(金) 15:22:48
単純に、
<a href="http://www〜〜/xxx.csv">CSVファイル</a>
をクリックするとダウンロードのダイアログを出したいとみた。

これは、クライアント側の設定になります。

ネスケ4.5は
編集 -> 設定 ->Navigater -> アプリケーション-> 編集 -> ディスクに保存をクリック

IEはどういうわけか普通のエクスプローラの設定で
表示 -> オプション -> ファイルタイプ -> 編集
う〜ん、こちらはイマイチ自信がない。ネスケは自信あります。
いろいろ、試してみて下さい!

H&A 2000/03/31(金) 15:39:16
CGI が CSV ファイルを読み込んでクライアントに送信するのか、それとも CSV ファイルへのリンクを CGI で生成するのかによって方法が異なりますが…
いずれにしても、サーバ側で MIME Type を設定する必要があります。
CSV ファイルに対応する MIME Type は通常は設定されていないので、

application/octet-stream



text/x-csv (text/x-comma-separated-values)

などを指定してあげます。指定方法は、先にあげたように CGI の動作内容によって異なります。

みみぃ 2000/03/31(金) 16:50:43
a様、H&A様、ありがとうございます。

やりたい事としては、H&A様の方のクライアントに送信する・・・という
やり方であっているのですが、ブラウザ上にデータが表示されてしまっています。
記述を書いておきますが、どこが悪いのでしょうか?
実際表示されているファイルはあっています。

($id) = $ENV{QUERY_STRING} =~ m/id=(.*)/;
$filename=$id . ".csv";
print "Content-type:application/octet-stream\n\n";
open(IN,"$filename");
print <IN>;

H&A 2000/03/31(金) 16:55:12
> print "Content-type:application/octet-stream\n\n";

ここを、

print "Content-type: application/x-csv\n";
print "Content-Disposition: inline; filename=foo.csv\n\n";

と変更してみた場合にはどうでしょうか?

みみぃ 2000/03/31(金) 17:03:38
[[解決]]
解決しました!
H&A様、本当にありがとうございましたm(_ _)m

以下のように記述しました。
($id) = $ENV{QUERY_STRING} =~ m/id=(.*)/;
$filename=$id . ".csv";
print "Content-type: application/x-csv\n";
print "Content-Disposition: inline; filename=$filename\n\n";
open(IN,"$filename");
print <IN>;

[上に] [前に] [次に]