画像ファイルパス名でのログファイルへの書き込み
CGI勉強中です。Kentさんのトピックスボードのサブルーチンを参考にさせていただいていますが、画像ファイル名パスのログファイルへの書き込みが、
<>画像拡張子<>横サイズ<>縦サイズ<>・・・・省略
<>.gif<>100<>100・・・・・・省略
なのですが、上の画像拡張子のみ書き込みされている部分を画像ファイルパス+ファイル名+拡張子という具合にログファイルへ書き込むにはどのようにしたらよいのでしょうか?アドバイス願います。
参考までにkentさんのサブルーチン
sub upload {
local($no) = @_;
local($tail,$fnam,$macbin,$f,$i,$flag,$imgfile,
$upfile,$length,$W,$H,$W2,$H2,@tail,@fnam,@name,@upfile);
# 画像処理
$macbin=0;
@tail=();
@fnam=();
@name=();
foreach (@in) {
if (/(.*)Content-type:(.*)/i) {
$tail = $2;
$tail =~ s/\r//g;
$tail =~ s/\n//g;
push(@tail,$tail);
}
if (/.*name=\"(.*)\";.*filename=\"(.*)\"/i) {
$fnam = $2;
$fnam =~ s/\r//g;
$fnam =~ s/\n//g;
push(@fnam,$fnam);
push(@name,$1);
}
if (/application\/x-macbinary/i) { $macbin=1; }
}
# ファイル形式を認識
$f=0;
$i=0;
@upfile=();
foreach (0 .. $#tail) {
$i++;
$flag=0;
if ($tail[$_] =~ /image\/gif/i) { $tail=".gif"; $flag=1; }
elsif ($tail[$_] =~ /image\/jpeg/i) { $tail=".jpg"; $flag=1; }
elsif ($tail[$_] =~ /image\/x-png/i) { $tail=".png"; $flag=1; }
if (!$flag) {
if ($fnam[$_] =~ /\.gif$/i) { $tail=".gif"; $flag=1; }
elsif ($fnam[$_] =~ /\.jpe?g$/i) { $tail=".jpg"; $flag=1; }
elsif ($fnam[$_] =~ /\.png$/i) { $tail=".png"; $flag=1; }
}
if ($name[$_] eq "upfile$i") {
$upfile = $in{"upfile$i"};
$imgfile = "$imgdir/$no-$i$tail";
}
# アップロード結果
if ($flag) { $f++; }
else { push(@upfile,("","","")); next; }
# マックバイナリ対策
if ($macbin) {
$length = substr($upfile,83,4);
$length = unpack("%N",$length);
$upfile = substr($upfile,128,$length);
}
# データ書込み
open(OUT,">$imgfile") || &error("画像アップ失敗");
binmode(OUT);
binmode(STDOUT);
print OUT $imgfile;
close(OUT);
chmod (0666,$imgfile);
# 画像サイズ取得
if ($tail eq ".jpg") { ($W, $H) = &j_size($imgfile); }
elsif ($tail eq ".gif") { ($W, $H) = &g_size($imgfile); }
elsif ($tail eq ".png") { ($W, $H) = &p_size($imgfile); }
# 画像表示縮小
if ($W > $MaxW || $H > $MaxH) {
$W2 = $MaxW / $W;
$H2 = $MaxH / $H;
if ($W2 < $H2) { $key = $W2; }
else { $key = $H2; }
$W = int ($W * $key) || 1;
$H = int ($H * $key) || 1;
}
push(@upfile,($tail,$W,$H));
}
return @upfile;
}
お礼
回答ありがとうございました。 頑張ってみようと思います。
補足
回答ありがとうございます。 はい。エラー部分はそのまま残してあります。 そして気づくのが遅いのですが、別な部分での改造をしていたため、行数が違っておりました。 変更箇所はこのようになっていました。 質問しておきながら、申し訳ありません。 #その他の設定 の下部に上記40行目と書いた部分を追記 # パスワード変更 の下に上記77、78行と書いた部分を追記 #◇不正文字列のチェック の下に上記976行目と書いた部分追記 それから$pc{'画像URL'}を$logfiles/$setに変更しています。