• 締切済み

画像とtxtファイルの表示

現在CGIでtxtファイルが表示されるように print "Content-type: text/html; charset=euc-jp\n\n"; $count = 0; $viewline = 1; open(IN, "A.txt"); while(<IN>){ if($count == ( $viewline - 1)){ $line = $_; last; } $count++; } close(IN); print "$line\n"; としています。 ここでさらに画像も一緒にCGIで表示させたいのですが、そうゆうことはできるのでしょうか? できるのであれば教えて頂きたいです。調べてみたのですがなかなか見つからなくて・・・。 よろしくお願いします。

  • 1020
  • お礼率40% (30/75)
  • CGI
  • 回答数1
  • ありがとう数2

みんなの回答

noname#25358
noname#25358
回答No.1

 MIMEが html になっていますが、これはいいのでしょうか?(IEのバグ対策でしょうか)  表示しようとしているテキストファイルが、本当にプレーンのテキストファイルなら、同時に画像を表示することは不可能です。  これはCGIではなく、ブラウザ側の制限です。  なので、画像を同時に出力するなら、CGI側で出力するHTMLを加工し、<IMG> タグを付加するのが一番です。

1020
質問者

お礼

よく考えてみたらIMGで表示させるので何も問題ない事に気がつきました。 1週間くらい、できるかなーと考えていたのですが・・・(笑) お返事ありがとうございました。

関連するQ&A

  • テキストファイル内の変数を展開して出力したい

    テキストファイル内に変数を書いておいて、出力時に その変数を展開させる方法を教えてください。 具体的には、[test.txt]を[出力]のようにしたいのです。 ためしに[test.cgi]を作ったのですが[test.txt]の内容がそのまま出てきてしまいました。 [test2.cgi]ができるなら、[test.cgi]でもできると思っていたのですが… [test.cgi] #!/usr/local/bin/perl $moji="OK"; print "Content-type: text/html\n\n"; open(IN, 'test.txt'); while (<IN>) { print "$_"; } close(IN); exit; [test2.cgi] #!/usr/local/bin/perl $moji="OK"; $naka="<HTML><BODY>$moji</BODY></HTML>"; print "Content-type: text/html\n\n"; print "$naka"; } close(IN); exit; [test.txt] <HTML><BODY>$moji</BODY></HTML> [出力] <HTML><BODY>OK</BODY></HTML>

    • ベストアンサー
    • Perl
  • ファイルの最後の行から表示させる(最新情報を5回分だけ表示)

    ファイルの最後に1行追加し、6行以上になるとファイルの先頭を1行削除。 表示は最後の行から行うスクリプトを作りたいのです。 新しい情報を5回分だけ表示する様にしたかったのですが、余りにも力技なのでもう少しスマートにやる方法を教えてもらえませんか? ----sort.txt---- 1a 2b 3c 4d ---------------- #!/usr/bin/perl $fname = "sort.txt"; print "Content-type: text/html;\n\n"; $aaa="5e"; open(OUT, ">>$fname"); flock(OUT, LOCK_EX); print OUT "$aaa\n"; flock(OUT, LOCK_NB); close(OUT); open(IN, "$fname"); $cnt = "0"; while($line = <IN>){ $a[$cnt] = "$line"; $cnt++; } close(IN); if($cnt > 5){ open(OUT, ">$fname"); flock(OUT, LOCK_EX); $cnt = "0"; while($cnt < 6){ if($cnt > 0){ print OUT "$a[$cnt]"; } $cnt++; } flock(OUT, LOCK_NB); close(OUT); } $cnt = "0"; open(OUT, "$fname"); @buff = <OUT>; close(OUT); foreach $line ( reverse @buff ){ $cnt++; print "$line<br>\n"; } exit();

    • ベストアンサー
    • Perl
  • CGIのログをHTMLで表示

    CGIのログ(カウント)をHTMLにSSIで表示させようと思い下記のCGIを考えたのですがうまく表示されません。 皆様のお力をお貸し下さい! [log.dat] L内容 DataSu='***'; (***にはカウント数字が入っています) 上のカウントログをHTML表示させる為にCGIを作る [count.cgi] #!/usr/local/bin/perl #カウントログ読み込み open(IN,"ログまでの相対パス"); # カウンターを読み出す $count = <IN>; #ファイルを閉じる close(IN); #サイト数の表示。 print "Content-type: text/html\n\n"; print "$count"; 上記のCGIを表示させるとDataSu='***';とファイル内容が全て表示されてしまいます。 ***のカウント数だけ表示させるにはどうしたらいいのでしょうか?

    • 締切済み
    • CGI
  • 画像が表示できません。

    print "Content-type: image/gif\n\n"; open(IMG,"./1.gif"); $img =(IMG); close(IMG); print $img; 画像ファイル "http://0.0.0.0/a.cgi" は壊れているため、表示できませんでした。 となり表示ができません。

    • ベストアンサー
    • Perl
  • TXTに出力すると文字化けが起こる

    Ajaxで送信したデータを元にCGI(Perl)でTXTファイルを書き換えると、 どうしても文字化けしてしまいます。 内容はこんな感じです。無駄な部分は省きました ************************* #!/usr/local/bin/perl print "Content-type: text/html; charset=Shift_JIS\n\n"; use CGI; $n = $q->param("name"); $data = "$nさん、こんにちは"; open(F,"> data.txt"); flock(F,2); print F $data; flock(F,8); close(F); end; ************************* $n(フォームのデータ)は文字化けしないのですが、 「さん、こんにちは」の部分が文字化けしてしまいます。 詳しい方、ご教授願います。

    • 締切済み
    • CGI
  • 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
  • どうしてもインターナルサーバーエラーになります

    #!/usr/bin/perl # アクセスカウンタ print "Content-type: text/html; charset=Shift_JIS\n\n"; # カウントファイルから読み込み open(IN, "counter.txt"); $count = <IN>; close(IN); # カウント増加 $count++; # カウントファイルに書き込み open(OUT, "> counter.txt"); print OUT $count; close(OUT); print <<EOL; <html> <body> <p>あなたは $count 人目のお客様です</p> </body> </html> EOL ------------------------------------------- ↑は、 http://ponk.jp/perl_bbs/index.php?page=2 このサイトからの引用なのですが、どう頑張っても このアクセスカウンターCGIにアクセスしてもインターナルサーバーエラーになってしまい助言お願いにきました。。 ちなみにこのアクセスカウンター編の前の「ブラウザに文字列を表示する」のところでは、しっかりCGIをサーバーにアップロードして ブラウザに表示させることができましたので、なぜアクセスカウンター は表示してくれないのか途方にくれています。 ・パスの確認 ・属性の確認 ・アスキーモードなどの送信形式の確認 等など、あやしいところは全てチェックしてみましたがダメでした・・・。 ブラウザに文字列を表示させるだけの事はできたのになぜ、アクセスカウンタは表示させれないのか全くわかりません。 どなたかわかる方いらっしゃいましたらすいませんがどうか教えてください。よろしくおねがいします。

  • ファイルダウンロードで、DBCSファイル名が文字化け

    Perlで、ヘッダーを付けてファイルをダウンロードするスクリプトを作っています。 以下のように、test.html(EUC)からattach.cgi(Shift-JIS)へ飛びますが、IEとFirefoxで動作が違います。 ・IE: ファイル名が化けない ・Firefix : ファイル名が化ける おそらく、Firefoxの場合、呼び出し元がEUCなので、その先のattach.cgiもEUCだと決め付けているのでしょう。 試しに、attach.cgiをEUCにした場合、動作が逆になります。 ・IE: ファイル名が化ける ・Firefix : ファイル名が化けない ブラウザに対して、「ファイル名はShit-JISです」と宣言できるような文があればと思って調べているのですが、見つかりません。 ファイル名が化けないようにする方法がありましたらご教授いただけますと助かります。 ■==== test.html (EUC) ======= <HTML> <HEAD><meta http-equiv="Content-Type" content="text/html;charset=EUC-JP"></HEAD> <BODY> <a href="attach.cgi">添付ファイルのテスト</a> </BODY> </HTML> ■==== attach.cgi (Shift-JIS) ======= $filename="日本語のテストです.txt"; print "Content-type: application\n"; print "Content-Disposition: attachment; filename=$filename\n\n"; ■テストした環境 IE 6.0 Firefox 2.0.0.8 WindowsXP(sp2) Perl 5.8.8 よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIでファイルが読み込めない

    CGI初心者です。 (osはlinuxです。) #!/usr/local/bin/perl use strict; use CGI; my $file=new CGI; open(DATA,"/home/data.txt"); $file=<DATA>; close=(DATA); print "Content-type: text/html\n\n"; print "data=$file"; このスクリプトで、/home/data.txt(フルパスです)に書かれているデータを1行だけをブラウザで表示させたいのですが、表示できません。 どこがおかしいのか教えてください。 ちなみにdata.txtには実際に「abc」という文字1行しか入れていません。

    • 締切済み
    • CGI
  • ssiでlogの表示方法

    CGIのlog(カウント数)をSSIで表示させたいのですがどのように改造したら良いのかわかりません。 追記のような感じでCGIを製作したいのですが、logの内容が違うのでどのように対処したら良いのかわかりません。 呼び出したいlogの内容(カウント数)は下記のようになっています。 document.write('**'); ※ **は数字 下記のcgi【例】を応用したCGIでカウント数だけを呼び出しす事は可能でしょうか?とても困っているので良きアドバイスをお願い致します。 【例】 [カウントを呼び出すCGI]下記はSSIでカウント数を呼び出すCGI /usr/local/bin/perl #読み込み。 print "Content-type: text/html\n\n"; open(IN,"./js/data-su.js"); while(<IN>) {if(/DataSu='([^']*)/){print $1;last;} } close(IN); __END__ [log(A)]下記はファイル内の内容 DataSu='**'; ※ **は数字

    • ベストアンサー
    • CGI

専門家に質問してみよう