アプリ版:「スタンプのみでお礼する」機能のリリースについて

画像アップロード機能を追加しようとしたのですが、できません。

こちらのhttp://www.new-f.com/に置かれているRPGキャラクターシート管理CGIver2.00に
ローカルから画像をアップできるようにしたいと思っております。

こちらhttp://www.ss.iij4u.or.jp/~somali/web/_perl_uplo …にcgi.pmを使う方法がありましたので、
ソースをそのまま流用して、ファイルアップができるかどうかを確認し、問題なくファイルアップができましたので、そのソースをを追記してみました。

文法チェッカーなどでは、特に問題ないと出たのですが、入力ををする時点まではできるのですが、
送信すると、500エラーとなってしまいます。
どのようにしたら、画像アップが可能になるでしょうか?
それとも、この方法では不可能なのでしょうか?

追記した部分(エディタTeraPad使用/102桁で折り返し)
40行目~
# POSTサイズの上限
$CGI::POST_MAX = 1024 * 1024; # 1MB
$query = new CGI;
# キャラクタ更新フォーム
# 最大許容サイズ(KByte)
my $maxsize = 300;
# 保存先ディレクトリ
my $logfiles = "./imgs";
# アップロードを許可するファイルの種類(MIMEと拡張子)
my %hash_mime = (
'image/gif' => 'gif', # GIFファイル
'image/jpeg' => 'jpg', # JPEGファイル
'image/pjpeg' => 'jpg' # プログレッシブJPEGファイル
);
77、78行目
# 画像アップ
upfile(param('upfile')) if ( param('upfile') );
207行目
<INPUT size="40" type="file" name="upfile"  value="$logfiles/$set">
686、687行目
if ( $logfiles/$set eq "" || $logfiles/$set eq " "){print OUT "No Photo Data.";}
else{print OUT "<img src=\"$logfiles/$set\" width=\"250\" alt=\"キャラクタ画像\">";}
976行目~
sub upfile{
#送られてきたデータを処理する -----------------
# ファイル取得
my $fH = $query->upload('filename');
# エラーチェック
if ($query->cgi_error) {
my $err = $query->cgi_error;
&error("$err") if ($err);
}
&error("File transfer error.") unless (defined($fH));
# MIMEタイプ取得
my $mimetype = $query->uploadInfo($fH)->{'Content-Type'};
# 保存するファイル名を取得
my $set = &set_name($mimetype);
# ファイルサイズ取得
my $size = (stat($fH))[7];
# サイズ制限
&error("The filesize is too large. Max $maxsize KB") if ($size > $maxsize * 1024);
# ファイル保存 ---------------------------------
my ($buffer);
open (OUT, ">$logfiles/$set") || &error("Can't open $set");
binmode (OUT);
while(read($fH, $buffer, 1024)){
print OUT $buffer;
}
close (OUT);
close ($fH) if ($CGI::OS ne 'UNIX'); # Windowsプラットフォーム用
chmod (0666, "$logfiles/$set");
}
# ファイル名を設定 -----------------------------
sub set_name {
my ($mime) = @_;
# 拡張子をセット
my $ext = $hash_mime{$mime} ? $hash_mime{$mime} : &error("Can't permit this file.");
# ファイル名のフォーマット
my $set = time . "_" . $$ . "." . $ext;
return $set;
}

A 回答 (1件)

サブルーチンのエラー処理


sub error {
(略)
はありますよね?

この回答への補足

回答ありがとうございます。
はい。エラー部分はそのまま残してあります。

そして気づくのが遅いのですが、別な部分での改造をしていたため、行数が違っておりました。
変更箇所はこのようになっていました。
質問しておきながら、申し訳ありません。
#その他の設定
の下部に上記40行目と書いた部分を追記
# パスワード変更
の下に上記77、78行と書いた部分を追記
#◇不正文字列のチェック
の下に上記976行目と書いた部分追記
それから$pc{'画像URL'}を$logfiles/$setに変更しています。

補足日時:2008/11/17 21:48
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

頑張ってみようと思います。

お礼日時:2008/12/04 21:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!