SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

CGI-Perl 基礎実地編 - 実習14 (画像レスポンス、画像出力、画像表示)

■test14.cgi

------ ↓ ここから ↓ ------
#!/usr/local/bin/perl

#// 準備
  $fname = 'test.gif';
  $imgtype = 'gif';
  $cufld = '.';
  $dbfld = '/w_test/';
  $path  = $ENV{'PATH_INFO'};

#// 動作環境セット
  if (($i = index($path, $dbfld)) != -1) {
    $cufld = '..' . substr($path, $i, $i + length($dbfld) - 1);
  }

#// 画像オープン
  open(IMG, "$cufld/$fname") or die;

#// イメージ表示
  binmode IMG;
  binmode STDOUT;
  print "Content-type: image/$imgtype\n\n";
  print while (<IMG>);

#// 画像クローズ
  close(IMG);

#// 終了
  exit(0);
------ ↑ ここまで ↑ ------

■解説

  ・この test14.cgi は、カレントフォルダにある test.gif をブラウザに
    表示します。

  $fname = 'test.gif';
            |_ 画像ファイル名

  $imgtype = 'gif';
              |_ 画像タイプ (.jpg or .jpeg は、必ず 'jpeg' と指定)

  binmode IMG;
  |_ IMG ファイルハンドルをバイナリモードでアクセスする

  binmode STDOUT;
  |_ STDOUT つまり、ブラウザレスポンスをバイナリモードにする

  print "Content-type: image/$imgtype\n\n";
                       |     |_ イメージタイプに gif を指定
                       |_ レスポンスレッダにイメージを指定

  print while (<IMG>);
        |_ IMG ファイルハンドルの最後までを読んで標準出力に書き出す
           (標準出力は STDOUT。つまり、ブラウザ。)

■補足

  ・画像ファイルに MAC バイナリヘッダ(128 byte) が含まれているとダメ
    です。事前にカットしておきましょう。

■実地

  ・test14.cgi も実際に作成してテストしてみましょう。
    画像ファイルを jpeg にしても試してみましょう。

■CGI-Perl 基礎実地編資料
■CGI-Perl 基礎編資料
■CGI-Perl 応用実地編資料
■PHP 基礎編資料
■PHP + MySQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK