画像をリサイズしてアップロード 最終ソース

#ファイル1の処理
if ( length($query->param(‘i_img1’)) > 0 ) {
$fname = basename($query->param(‘i_img1’));
$fname =~ s/(^.*\/)|(^.*\\)//;

#20130212  タイムスタンプをファイル名にする*************************************************
my $tm_now=time;
$fname =~ s/(^.*\.)/$tm_now\./;
#********************************************************************************************yasu

$newfile = “$upload_dir/$fname”;
# 同じファイル名がないかチェック
if ( -f “$newfile”) {
&error($fname.”と同じファイル名が存在します。” .
“ファイル名を変更して送信してください。\n”);
}
}
#ファイル2の処理
if ( length($query->param(‘i_img2’)) > 0 ) {
$fname2 = basename($query->param(‘i_img2’));
$fname2 =~ s/(^.*\/)|(^.*\\)//;

#20130212 タイムスタンプをファイル名にする*************************************************
#2枚目の画像の名前にはプラス1をつけてある。
#これを付けないと瞬時の動作なので同じファイル名になってしまう。
my $tm_now2=time + 1;
$fname2 =~ s/(^.*\.)/$tm_now2\./;
#********************************************************************************************yasu

$newfile2 = “$upload_dir/$fname2”;
# 同じファイル名がないかチェック
if ( -f “$newfile2″) {
&error($fname2.”と同じファイル名が存在します。” .
“ファイル名を変更して送信してください。\n”);
}
}

#ファイルが選択されているかチェック
#アップロード処理1
#uploadメソッドによりアップロードするファイルのファイルハンドルを作成します。
#uploadメソッドの返り値はファイルハンドルになります。
#このファイルハンドルに対して処理をすることでアップロードするファイルを操作することができます。
#ファイルが選択されているかチェック
if ( length( $fname ) > 0 ){
my $fh = $query->upload(‘i_img1’);

#2013-2-8 yasu アップロード用画像を200ピクセル四方に納めるよう縮小 **********
my $temp_path = $query->tmpFileName($fh);→これが必要
my $image = Image::Magick->new;
$image->Read($temp_path);
$image->Resize(
geometry => “200×200”,
);
$image->Write($temp_path);
#***************************************************************************

#copyメソッドでファイルハンドルをファイルにコピーします。
#ファイルハンドルをファイルに書き出せばアップロードできるのでopen, while, binmode, print, closeでも
#ファイルを書き出すことができます。ここではcopyの一コマンドで済ましています。
#この時点でファイルのアップロードは完了します。

# 20130212 yasu ******************************************************
#copy ($fh, “$newfile”);
move ($temp_path, “$newfile”);
#****************************************************************** yasu

#パーミッションを変更
chmod (0666, “$newfile”);
}

#ファイルが選択されているかチェック
if ( length( $fname2 ) > 0 ){
#アップロード処理2
my $fh2 = $query->upload(‘i_img2’);

#2013-2-8  アップロード用画像を200ピクセル四方に納めるよう縮小 **********
my $temp_path2 = $query->tmpFileName($fh2);
my $image = Image::Magick->new;
$image->Read($temp_path2);
$image->Resize(
geometry => “200×200”,
);
$image->Write($temp_path2);
#***************************************************************************

# 20130212  ******************************************************
#copy ($fh2, “$newfile2”);
move ($temp_path2, “$newfile2”);
#****************************************************************** yasu

#パーミッションを変更
chmod (0666, “$newfile2”);
}