アプリ版:「スタンプのみでお礼する」機能のリリースについて

Webページに「ダウンロード」というボタンかリンクがあり、それをクリックするとローカルコンピュータにWebサーバーにあるテキストファイルをダウンロードできるCGIを作成したいのですが・・・
以前に同じ質問を上げたら「Content-type: text/download
」としたらいいよ・・・と教えたもらったのですが、もひとつピンとこなくて、簡単なコーディング例みたいなものを誰か教えてください。
それだけわかったら自分でなんとかしろよ!と思われるかもしれませんが小生Perl初心者の為、???なのです。

A 回答 (2件)

あれれ?うちではうまく行くんですが・・・


別のHTMLのリンクからCGIを起動してもだめでしょうか?
もしかしたら、サーバーかブラウザの問題なのかも知れません。だとすると、申し訳ないのですが分かりません。
    • good
    • 0
この回答へのお礼

別のHTMLからリンクしたらいけました。
ありがとうございます。
しかしURLをダイレクトにアドレスバーに入力するのとリンクで違うのですね・・・これもびっくり
20ポイントと気持ちだけのヴァーチャルアサヒスーパードライ12缶セットをお送りします。これからもよろしくお願いします。

お礼日時:2004/02/24 18:28

CGIでWebページを出力する時は、



print "Content-Type: text/html; charset=Shift_JIS\n\n";
# この後、ページの内容を出力

みたいにしますよね。
この「Content-Type: ~」というのは、アクセスしてきたブラウザに対してこういうデータを返す(送る)よ、というメッセージなんです。
ブラウザはそのメッセージが text/html だったらHTML文書として表示し、text/download なら保存のダイアログを開く、というわけです。
なので、

#! /usr/bin/perl
# ↑自分のサーバ環境に合わせてね
open FH, "パス/ファイル名";
print "Content-Type: text/download\n\n";
print <FH>;
close FH;

のようなCGIを書いて、ダウンロードのリンクやボタンの参照先にしてやればOKです。

ちなみに、ダウンロードするファイル名を指定したい場合は、
print "Content-Type: text/download\n\n";

print <<__EOH__;
Content-Type: text/download; name="ファイル名"
Content-Disposition: inline; filename="ファイル名"

__EOH__
としてください。(__EOH__の前に、空行が1つ入っています。)

この回答への補足

leaz024さん、いつもお世話になります。
え~っと「保存するファイルをTAB区切りにする」のと「文字列の先頭文字を取り出す」という質問に答えていただいて今度は3回目です。本当に助かってます。お中元贈らないと・・・(送り先がわからん!)
さて、おっしゃる通り
#! /usr/bin/perl
# ↑自分のサーバ環境に合わせてね
open FH, "./jikken.txt";
print "Content-Type: text/download\n\n";
print <FH>;
close FH;
とやってみました。CGIファイル名はdl.cgi ダウンロードデータはjikken.txtで、
ローカルコンピュータ上でためしてみたんですが
「Internet Explorerではlocalhost-dl.cgiをダウンロードできませんでした。このインターネットサイトを開くことが出来ませんでした。要求されたサイトが使用できないか、または見つけることができませんでした。後でやり直してください。」
とエラーが表示されます。どうしたもんでしょうか?ローカルでは試せないということでしょうか?

補足日時:2004/02/24 13:55
    • good
    • 0

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