CGIでgifファイルを表示するには?
[上に]
[前に]
[次に]
tak
[E-Mail]
1999/09/09(木) 17:43:02
初歩的な質問ですみません。私の使っているサーバーは
exec命令が使えないのでアクセスログをつるためにCGIを
IMG SRC=""で呼び出しています。その場所に画像を表示さ
せたいのですが、そのためにはPerl文中にどのように書けば
よいでしょうか?画像表示に必要な部分だけでいいので
どなたか教えていただけないでしょうか?
B-Cus
1999/09/09(木) 18:23:04
print "Content-type: image/gif\n\n";
open(IN,"hoge.gif");
print <IN>;
close(IN);
B-Cus
1999/09/09(木) 18:27:52
Content-length を出した方がいいかなぁ。
> print "Content-type: image/gif\n\n";
print "Content-type: image/gif\n";
print "Content-length: ",-s "hoge.gif","\n\n";
たこすけ
1999/09/09(木) 18:30:53
--A--
print "Location: hoge.gif\n\n";
--B--
print "Content-type: image/gif\n\n";
open IN, "hoge.gif";
print <IN>;
close IN;
----
ウチではA,Bどちらでも出来たけど
正しい方法かどうかは知りません。(←オイオイ)
Bの場合、Windowsだとbinmodeとか必要なのかなぁ?
たこすけ
1999/09/09(木) 18:32:22
あ、遅かった。
B-Cus
1999/09/09(木) 18:39:23
> Bの場合、Windowsだとbinmodeとか必要なのかなぁ?
そうです。binmode(IN)
ふじ
1999/09/09(木) 18:49:56
サーバが NT だったときのために、
open(IN,"hoge.gif");
の後に
binmode IN;
としておく方が安全かも。
seea
1999/09/10(金) 08:05:07
>たこすけさん
環境に大きく左右されるので一概には区別できませんが、
Aはクライアントのキャッシュに入らないことが多いです。
Bは(Content-length が決まっていれば?)設定によっては、キャッシュ入りします。
この現象はMSIE5.0で確認しました。
ユーザ数を考慮すれば、アクセスログに違いが出てくるのではないでしょうか。
tak
[E-Mail]
1999/09/10(金) 10:32:50
[[解決]]
沢山のみなさんに教えて頂いて本当に有難うございました。
お蔭様で見事に解決しました。(^o^) 次回(?)もよろしくお願いします。
たこすけ
1999/09/13(月) 16:22:45
既に解決されていますが・・・
>> Bの場合、Windowsだとbinmodeとか必要なのかなぁ?
> そうです。binmode(IN)
B-Cusさん、ご返答ありがとうございます。
> ユーザ数を考慮すれば、アクセスログに違いが出てくるのではないでしょうか。
seeaさん、これは
「キャッシュに入ると、CGIを呼ばずにキャッシュを読みに行くので
正確なアクセスログが取れない」
という意味でしょうか?
だとしたらBを
print "Pragma: no-cache\n";
print "Content-type: image/gif\n";
print "Content-length: ",-s "hoge.gif","\n\n";
のようにすれば大丈夫・・・かな?
(ウチのNC4はこれでキャッシュ入りしませんでした)
発言の意味を取り違えていたら、すいません。
paraQ
1999/09/13(月) 17:55:30
ユーザーにとってはキャッシュに入ってくれた方が、表示速度の面では良いのではないでしょうか。
それで個人的には
> --A--
> print "Location: hoge.gif\n\n";
この方法でキャッシュに入る方法があればなあ。無いか……。
[上に]
[前に]
[次に]