こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ファイルの転送。

<Form>内、<Input type="file">タグにてファイルを転送し。それをPerlで受け取って、保存しようと思っています。保存する主なファイルは画像ファイルです。
前に立てたレスにて、cgi-lib.plを使用すると楽との指摘を受けました。
こちらでいろいろ調べてみましたが、ファイル転送を日本語で解説しているページが見つかりません。
参考にしたページはこちらです。
http://www.futomi.com/lecture/form/cgilib.html
これだと<Input type="text">などの内容の取得方法はわかりますが。<Input type="file">の内容の取得方法がわからないのです。
残念なことなのですが、cgi-lib.plのソースコードに記載されている解説を見ても、私がまったく英語が読めない故に使用方法は分かりませんでした。

そこで、chi-lib.plでのファイルの内容を保存するまでの解説つきサンプルコード・cgi-lib.plでのファイルの転送を解説している日本語のページどちらかを教えていただきたく思います。

また、cgi-lib.plと比較し、CGI.pmも同等の機能を保有しているように見て取れるのですが、やはりperlの推奨している通り.plより.pmを使用したほうがよいのでしょうか?
分かる方がいらっしゃいましたら、この辺りのことについても教えていただきたく思います。

なにぶん、ファイル転送は初の試みゆえにいろいろと覚えることが多く大変です。分かりやすい解説をお願いします。

投稿日時 - 2005-01-23 01:26:29

QNo.1181296

すぐに回答ほしいです

質問者が選んだベストアンサー

cgi-lib.plを用いたアップロードですが、ちょっとググッたらあったので参考URLに載せておきます。

CGI.pmなら、参考URLのフォームを拝借するとして、(Perl 5.8以降を想定)

use CGI;
my $q = new CGI;
my $ufh = $q->upload('upfile'); # アップロード用ファイルハンドルを取得
open my $fh, '>>:byte', $q->param('upfile'); # ファイル名を取得して同名でファイルを開く
while( read $ufh, my $buffer, 1024 ){ # 1024(1K)バイトごとにバッファリングしながら…
print $fh $buffer; # 順次ファイルに書き込み
}
close $fh;

とかになるでしょうか。

.plと.pmですが、違いはいろいろありますが、ひとまず理解しやすい(というか好きな)ほうを使えばよいと思います。

CGI.pmは標準モジュールであると言う強みがありますが、出力生成まで含んだかなり高機能なモジュールなので、時と場合を選ばないとオーバースペックになりがちです。

参考URL:http://www.aimix.jp/cgi/acccgilibupfile.html

投稿日時 - 2005-01-23 05:28:49

お礼

回答ありがとうございます。
現在、仕様を確認しサンプルコードを作成していますのでポイントまではしばしお待ちを、

投稿日時 - 2005-01-24 23:45:30

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問