CGI-BBS > チャット > ツーショットチャット > ローカルから画像をアップ出来るようにしたいんですが


カレッヂ
カレッヂ


質問者 satoru  投稿日 8/13(月) 14:06:37
題名の通りなのですがこのような改造はやっぱりだいぶ大変なんでしょうか?
回答者 まさ  [削除]  投稿日 8/17(金) 09:57:25
CGI.pmを使えばそんなに大変ではないです。

質問者 satoru  [削除]  投稿日 8/17(金) 10:09:13
まささん、回答ありがとうございます。
それほど難しくはないと聞いて出来れば画像アップ出来るように改造したいのですが、
つかぬ事をお伺いしてよろしいですか?
CGI.pmとは一体どういったものでしょう?
CGIにおいて初歩的な事でしたら本当に申し訳ありません。
まだまだ初心者なものでよろしければお教え願えませんか?
回答者 まさ  [削除]  投稿日 8/17(金) 16:11:46
CGI.pmは標準に付いてくるモジュールです。
これを使えば画像のアップロードは恐ろしく簡単になります。
詳しくはサーチエンジンで自分で調べてみて下さい。

回答者 まさ  [削除]  投稿日 8/17(金) 16:55:26
そのまま真似なくてもいいですが、参考までに。

http://www.harukaze.net/~mishima/perl/module/upload_by_CGI_pm.html

回答者 まさ  [削除]  投稿日 8/17(金) 17:25:39
一点だけ注意を書いておくと、CGI.pmを使ってやると、いくらの容量のファイルもアップ
ロードされてしまいます。ですからサーバー側の空き容量に余裕があれば問題ないですが、
大概の場合、サーバーで使える容量は知れています。ですからファイルの容量の上限値は
きっちり自分で決めてやって下さい。でないとすぐに容量オーバーになります。

質問者 satoru  [削除]  投稿日 8/23(木) 09:53:03
まささん、こんにちは。
最近チョット忙しくしていてお礼が遅くなってしまい申し訳ありません。
親切なご指導ありがとうございます。
教えていただいたURLのをそのまま真似てしたのですが上手くいきませんでした。
ファイルの参照までは出来るんですが画像のアップの方が上手くいかないです。
何処かいじらなければいけない場所があるんでしょうか?

回答者 まさ  [削除]  投稿日 8/23(木) 18:23:01

あれは全て真似てもモジュールとかがないのでエラーになります。
あくまでも参考です。

以下にCGI.pmだけを用いたファイルアップロードのスクリプトを書いておきます。

----------------------------------------------------------------------------
#!/usr/local/bin/perl

# 画像ファイルのサイズ制限(KB)
$img_max = '100';

# 画像を保存するディレクトリー
$images = '画像を保存するディレクトリー';

use CGI;
$query = new CGI;
$filename = $query->param('File');

# ファイルを読み込む
while(read($filename, $buffer, 2048)) {
        $file .= $buffer;
        $file_size ++;
        if($file_size > $img_max / 2) { &Error("ファイルサイズが大きすぎます"); }
}

# 拡張子を取り出す
$type = $query->uploadInfo($filename)->{'Content-Type'};
if    ($type =~ /jpeg/i) { $ext = 'jpg' }
elsif ($type =~ /gif/i ) { $ext = 'gif' }
else  { &Error("その形式の画像ファイルは保存できません"); }

$new_file = "test" . ".$ext";

# ファイルを指定ディレクトリにコピー
open(OUT, "> $images/$new_file");
binmode(OUT);
print(OUT $file);
close(OUT);
chmod(0666, "$images/$new_file");

# 完了メッセージの表示
print <<END_OF_HTML;
Content-type: text/html

<HTML>
<BODY>
ファイルのアップロードに成功しました。
</BODY>
</HTML>
END_OF_HTML

exit;
-----------------------------------------------------------------------------

これは今書いたので動くかどうかわかりません。
一度試してみて下さい。
アップロードできるファイルの種類はGIFとJPEGのみです。

なおこれはディレクトリーの中にtest.*と言う固定ファイルしか作りませんので、ひとつの
ファイルしかアップロードできません。適当に改良して下さい。

Errorサブルーチンもないのでこれも適当に。。。

回答者 チエ  [削除]  投稿日 12/12(水) 15:13:29
横からすみません。。。
こっそりと、上記のスクリプトをつかわさせてもらいました。
よろしかったでしょうか。。。
で、すみませんついでに、質問です。
時効だったら、流しちゃってください。。。

このスクリプト、WinNT環境で、正常に動作したんですが、
LINUXに移行したら、画像がアップされませんでした。
パーミッションは、画像が入るディレクトリを 705にしました。
LINUX用に、修正が必要なんでしょうか?
よろしくおねがいします。
回答者 まさ  [削除]  投稿日 12/12(水) 17:20:14
パーミッションは777です。

返信(回答)する


Web裏技