画像アップロード機能を追加しようとしたのですが、できません。
こちらの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;
}
No.1ベストアンサー
- 回答日時:
サブルーチンのエラー処理
sub error {
(略)
はありますよね?
この回答への補足
回答ありがとうございます。
はい。エラー部分はそのまま残してあります。
そして気づくのが遅いのですが、別な部分での改造をしていたため、行数が違っておりました。
変更箇所はこのようになっていました。
質問しておきながら、申し訳ありません。
#その他の設定
の下部に上記40行目と書いた部分を追記
# パスワード変更
の下に上記77、78行と書いた部分を追記
#◇不正文字列のチェック
の下に上記976行目と書いた部分追記
それから$pc{'画像URL'}を$logfiles/$setに変更しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
unixでのファイルロックの方法...
-
VBAでCSVファイルを途中行まで...
-
C言語の問題について
-
バッチファイルの作り方(CSV→...
-
openした後、closeしないでプロ...
-
csvファイルの横方向への改行に...
-
awkスクリプトでダブルクォーテ...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルの特定行を書...
-
FindFirstFileとFindNextFileで...
-
C言語でファイル名を取得
-
JSP URLに表示される拡張子 .jsp
-
close()で例外が投げられる理由
-
python renameについて
-
MATLABのm-fileについて
-
ListBoxのデータを高速でファイ...
-
cgiの投票回数制限設定について...
-
Perlで特定行から特定行までを...
-
(Perl)UTF-8で別ファイルに書き...
-
2つのCSVファイルをマッチング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fopenでディレクトリ内の全ファ...
-
unixでのファイルロックの方法...
-
1行がやたら長いテキストをバッ...
-
VBでファイル分割の方法
-
ファイルの結合
-
ファイルがオープンできない
-
【PHP】アクセス過多でファ...
-
ファイルディスクリプタとは?
-
ファイルの存在確認をしたい
-
printscreenについて。
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
DOSコマンドで、標準出力を出力...
-
ExcelをCSV書き出す場合のシー...
-
openした後、closeしないでプロ...
-
close()で例外が投げられる理由
-
batファイルでrenameができませ...
-
VBAでCSVファイルを途中行まで...
-
window.open でのファイル指定方法
おすすめ情報