CGI-BBS > CGI > Perl > Perlの設置で画像を表示したい。


カレッヂ
カレッヂ


質問者 おさむ  投稿日 2005/3/13(日) 22:14:10
 はじめまして。つい最近CGIに興味をもって勉強中の超初心者です。
 テキストの表示とか時間の表示ができるようになって、やっと画像を表示するところに至って、
つまずきました。画像の表示で必要なことは、
1.サーバーの設定で(例えば、cgi-bin)ディレクトリ内でもバイナリファイルを扱えるように設定する。
2.MIMEタイプでgifやjpegを指定する。
などなど、いろんな条件があると思うのですが、今、単純に画像ファイルを取得できるプログラムを勉強しています。
以下のプログラムでは、画像が表示されないのですが、何が原因なのでしょうか?
わかる方、おしえてください。
 サーバー環境はApache for WIN 32を使っています。自分のPCに実験的な環境として設定しているだけで、
ちゃんとしたサーバーとしては使っていません。


#!/usr/local/bin/perl

print "Content-type: image/jpeg\n\n";   #コンテンツタイプを指定する
open IMGG, "img/aaa.jpg";                      #ファイルハンドル IMGGに画像ファイルを読み込む
binmode (IMGG);                         #画像なのでバイナリモードに設定する
print <IMGG>;                           #ファイルハンドルを画面に書き出す
close (IMGG);                           #ファイルハンドルを閉じる

exit;

【習熟度】多少の改造ができる

回答者 しあわせのツボ  [削除]  投稿日 2005/3/15(火) 20:17:58
バイナリを出力する場合は、入力元だけでなく出力先のファイルハンドルにもbinmodeの指定が必要です。
binmode(STDOUT); の1行を追加してみてください。
質問者 おさむ  [削除]  投稿日 2005/3/16(水) 04:24:01
#!/usr/local/bin/perl



print "Content-type: image/jpeg\n\n";   #コンテンツタイプを指定する
open IMGG, "./img/aaa.jpg";             #ファイルハンドル IMGGに画像ファイルを読み込む
binmode (IMGG);                         #画像なのでバイナリモードに設定する
binmode (STDOUT);
print <IMGG>;                           #ファイルハンドルを画面に書き出す
close (IMGG);                           #ファイルハンドルを閉じる

exit;

こんな感じでやってみました。
binmode (STDOUT);をそのまま追加したのですが、写真の部分が赤いばってん印のままです。
回答者 ヤス  [削除]  投稿日 2005/10/17(月) 17:23:28
こちらを参考にしてください
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_kj14.htm

返信(回答)する

 


Web裏技