• 締切済み

普通の html に cgi を使って画像を・・

ソースお手本表を見ながら質問タイトルのようなことをやりたいと思いました。 結果はHTMLを実行すると通信が1分から3分ぐらい通信を行い、最後には画像を表示しないようなります。 どこがおかしいのかおしえていただけないでしょうか? どうかお願いします。 ------------------------------------------------ #!/usr/local/bin/perl #use DBI; print "Content-type: image/jpeg\n\n"; open FH,"<image.jpg"; binmode FH; binmode STDOUT; print while(FH); close FH; ------------------------------------------------

  • gcc
  • お礼率8% (10/125)
  • CGI
  • 回答数1
  • ありがとう数1

みんなの回答

  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.1

while(FH) ↓ while(<FH>) とすれば、動きますですよん♪

gcc
質問者

お礼

こんな簡単なこととはしりませんでした。 本当にありがとうございました。 ところで何か<>をつける理由があるから動作しなかったのだと思うのですが、どのようなことなのか意味はあるのでしょうか? 単純なミスだけに忘れがちですね(感謝です)

関連するQ&A

  • HTMLのファイルにCGI処理結果を表示する

    まずトップページはhtmlで作ります。 そのトップページにいつも変化する所があるのでcgiで処理を施したものをhtmlに貼り付けたいと思っています。 その場合に例えば画像を出力させる場合は <IMG src="cgi-local/top.cgi"> で指定し、 #!/usr/local/bin/perl print "Content-type: image/jpeg\n\n"; open FH,"<../image.jpg"; binmode FH; binmode STDOUT; print while(<FH>); close FH; をやれば動かせますが、これを画像ではなくhtmlを表示させるためには print "Content-type: image/jpeg\n\n"; を print "Content-type: text/html\n\n"; に変更する事により可能だと思いやってみたのですが、うまく出力できませんでした。 cgi処理をうまくhtmlに貼り付ける方法があるのでしょうか。どうか教えて頂けないでしょうか?お願します。(涙)

    • ベストアンサー
    • CGI
  • Data::Dumper;でダンプ後表示した文字列\x{30fc}...

    お世話になります。 下記のスクリプトを使ってrssファイル内をuse Data::Dumper;でダンプして表示してみたのですが、rssファイルがutf8で記述されているせいか 表示時に日本語の所が\x{30fc}のような文字列になってしまいます。 これをshiftjisで表示させたいのですが、試行錯誤してもうまくいきません。 どなたかご教授いただけませんでしょうか。 #!/usr/bin/perl BEGIN{ $| = 1; print "Content-type: text/html\n\n"; open(STDERR, ">&STDOUT"); } use XML::RSS; use Data::Dumper; my $rss = new XML::RSS; #表示形式の違いで1と2がある。 $Data::Dumper::Indent = 1; use open IN => ":utf8"; # 入力をUTF8とする use open OUT => ":shiftjis"; #use open ":std"; #use Encode; #use encoding 'shiftjis', STDIN=>'utf8', STDOUT=>'sjis'; #binmode STDOUT, ":encoding(utf-8)"; #binmode STDOUT, ":encoding(shiftjis)"; #binmode STDOUT, ":encoding(euc-jp)"; #use open ":encoding(shiftjis)"; # rssをセット。 open my $fh, '< ./test.rss'; my $text = join undef, <$fh>; close $fh; # rssをパース $rss->parse($text); # ひとまず中見を知る為にダンプしてみる print "Content-type:text/html;charset=Shift_JIS\n\n"; print "<html><head>\n"; print "<title></title></head>\n"; print "<body>\n"; print Data::Dumper->Dump([$rss]);

    • ベストアンサー
    • Perl
  • ランダムスクリプトの仕様を変更したい

    以下ソースはランダムに画像を差し替えるスクリプトですが、これを利用して画像ではなくhtmlファイルを差し替えるようにしたいのですが可能でしょうか? #!/usr/bin/perl $n = 3*60*60; # 画像を変更する秒数 $imgdir="./image/"; if(!opendir(DIR,$imgdir)){ print "Content-type: text/html\n\n"; print "Directory open error.\n"; exit(1);} $k = @file = grep /\.(?:jpg|gif)$/, readdir(DIR); closedir(DIR); $a = int(time / $n) % $k; open(IMAGE, "$imgdir$file[$a]"); binmode(IMAGE); $size=read(IMAGE,$image, -s IMAGE); close(IMAGE); if($file[$a] =~ /\.jpg$/){print "Content-type: image/jpeg\n\n";} else {print "Content-type: image/gif\n\n";} binmode(STDOUT); print $image; exit; ど素人なもので試行錯誤しております(汗)。どうぞよろしくお願い致します。m(_)m

  • perlで動画を表示させたい

    perlで動画を表示させたいのですがうまくいきません。 print "Content-type: video/mpeg\n\n"; open FH,"foo.mpg"; binmode FH; binmode STDOUT; while (<FH>) { print STDOUT; } close FH; exit; MIMEのタイプがちがうのですか? サーバーに設定されているMIMEタイプです。 video/mpeg mpeg mpg mpe video/quicktime qt mov video/x-msvideo avi video/x-sgi-movie movie

    • ベストアンサー
    • CGI
  • perlで画像表示

    htmlファイルから<img src="./aa.cgi">と書いて連続した画像を表示させたいのですが @aa =(1,2,3); foreach(@aa){ open(IMG, "./$_.gif"); binmode(IMG); binmode(STDOUT); print "Content-type: image/gif\n\n"; read(IMG, $img, 1024); print $img; close(IMG); } こう書いたらだめなのでしょうか?

    • ベストアンサー
    • Perl
  • Image::Magickを利用して、任意の縦横各サイズを指定したフレ

    Image::Magickを利用して、任意の縦横各サイズを指定したフレーム内に、 縦横比の違う複数の画像ファイルをHTNL側で指定して呼び出すPerlCGIを 作りたいのですが、今のところ下記のようなimg1.cgiとimg2.cgiが分かっています。 img1.cgiは、複数画像の入っているフォルダを指定してHTML側で呼び出せるのですが、 現状サイズ指定はできません。img2.cgiは、Image::Magickを利用してサイズ調整は できるのですが、HTMLからのファイル指定とができません。 指定したフォルダから任意のファイル名をHTMLから呼び出し、元画像の縦横比を 変えることなく、スクリプト内で指定した縦横サイズ内に最大の画像を表示させるには どの様にしたらよろしいでしょうか。ご教授頂ければ幸いです。 宜しく、お願いします。 【img1.cgi】 ===CGI=== #!/usr/bin/perl use strict; my $fileName = $ENV{'PATH_INFO'}; my $view = './gazou'.$fileName; my $extention; if( $fileName =~/.+\.(\w+)/){$extention = $1;} print "Content-type: image/$extention\n\n"; open IMG,"$view"; binmode IMG; binmode STDOUT; while(<IMG>){ print; } close IMG; ===HTML=== <IMG src="img1.cgi/ファイル名.JPG" border="0"> 【img2.cgi】 ===CGI=== #!/usr/bin/perl use Image::Magick; $newwidth = 100; $newheight = 100; $i = Image::Magick->new; $i->Read('./gazou/3.JPG'); $i->Scale(geometry=>geometry, width=>$newwidth, height=>$newheight); print "Content-type: image/gif\n\n"; binmode(STDOUT); $i->Write("jpeg:-"); exit; ===HTML=== <IMG src="img2.cgi" border="0">

    • ベストアンサー
    • CGI
  • CGIで画像表示されなくGIF89aXとなります、なぜ?

    CGI初心者です。 CGI可のレンタルサーバーで、CGIで画像を表示させたいのですが、 ブラウザで見ると画像がでません。 画像の位置、パーミッションなどは何度も確認しました。 転送はバイナリです。 ------------- #!/usr/bin/perl $view = 'r1.gif'; print "Content-type: image/gif\n\n"; open IMGG,"$view"; binmode (IMGG); print <IMGG>; close (IMGG); ------------------------ このCGIのhttp:~CGIを直接打つとブラウザに 「GIF89aX」とでて画像が出ません。 画像をhttp:~で直接指定するとちゃんと画像が出ます。  なぜでしょう? すぐに回答ほしいです。 どなたか詳しい方、よろしくお願いしま~す。

    • ベストアンサー
    • CGI
  • バイナリファイルの出力

    「test.dat」というファイルをブラウザから ダウロードさせるためにバイナリ出力をしたいのですが、 空ファイルばかりできて上手くいきません。 以下のようなコードなのですが、どこが悪いでしょうか? ご教授ください。お願いします。 症状:ブラウザからダウンロードすると、ファイル名は正しいが 空のファイルになっている 環境:perl 5.8.7 windows server2003 ----------------------------------------------------------- #!/usr/local/bin/perl print "Content-Disposition: attachment; filename=\"test.dat\"\n"; print "Content-Type: application/octet-stream\n\n"; open(IN, "test.dat"); binmode(IN); binmode(STDOUT); print while (<IN>); close(IN); -----------------------------------------------------------

    • ベストアンサー
    • Perl
  • CGI勉強中(初心者です)

    #!/usr/bin/perl print "content-type:text/html\n\n"; print "<HTML>\n"; print "<head><title>CGI</title></head>\n"; print "<BODY>\n"; print "<H1><FONT COLOR=\"#FF0000\">こんにちは</FONT></H1>\n"; print "</BODY>\n"; print "</HTML>\n"; というCGIつくりました。 プロバイダの説明には Perlの場所 /usr/bin/perl または /usr/local/bin/perl となっていますが、 どこにどう置いて(ホームディレクトリでしょうか?)、どうやって起動させてよいのかさっぱりわかりません。 ご教授ください。

    • ベストアンサー
    • CGI
  • Perl+DBI+Apacheの動作

    #!C:\\Perl\\bin\\MSWin32-x86-object\\jperl use DBI; print \"Content-type:text/html\\n\\n\"; print \"<html><body>test script</body></html>\\n\"; という内容のスクリプトを指定したフォルダの中に入れても、「test script]とブラウザ上に表示されません。そのまま「#!C:\\Perl\\bin\\MSWin32-x86-object\\jperl use DBI; print \"Content-type:text/html\\n\\n\"; print \"test script\\n\";」と 表示されます。 Apache、ActivePerl、Mysql、DBI、DBDはインストールし、Apacheも動作しているのは確認できます。 どうしてなのでしょうか。解決方法を教えていただけると助かります。どうぞよろしくお願いします。

    • ベストアンサー
    • Perl