- ベストアンサー
サーバーのテキストファイルをダウンロード
Webページに「ダウンロード」というボタンかリンクがあり、それをクリックするとローカルコンピュータにWebサーバーにあるテキストファイルをダウンロードできるCGIを作成したいのですが・・・ 以前に同じ質問を上げたら「Content-type: text/download 」としたらいいよ・・・と教えたもらったのですが、もひとつピンとこなくて、簡単なコーディング例みたいなものを誰か教えてください。 それだけわかったら自分でなんとかしろよ!と思われるかもしれませんが小生Perl初心者の為、???なのです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あれれ?うちではうまく行くんですが・・・ 別のHTMLのリンクからCGIを起動してもだめでしょうか? もしかしたら、サーバーかブラウザの問題なのかも知れません。だとすると、申し訳ないのですが分かりません。
その他の回答 (1)
- leaz024
- ベストアンサー率75% (398/526)
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をダウンロードできませんでした。このインターネットサイトを開くことが出来ませんでした。要求されたサイトが使用できないか、または見つけることができませんでした。後でやり直してください。」 とエラーが表示されます。どうしたもんでしょうか?ローカルでは試せないということでしょうか?
お礼
別のHTMLからリンクしたらいけました。 ありがとうございます。 しかしURLをダイレクトにアドレスバーに入力するのとリンクで違うのですね・・・これもびっくり 20ポイントと気持ちだけのヴァーチャルアサヒスーパードライ12缶セットをお送りします。これからもよろしくお願いします。