※ ChatGPTを利用し、要約された質問です(原文:重複ファイル名ある場合ファイル名の末尾に1をつける。)
ファイルアップロード時の重複ファイル名の処理方法
このQ&Aのポイント
重複ファイル名の場合、ファイル名の末尾に番号をつける方法について
ファイルアップロードの処理時に重複するファイル名を上書きせず、番号を付与する方法について
上書きされないようにするためのファイルアップロード時の処理方法について
重複ファイル名ある場合ファイル名の末尾に1をつける。
ファイルアップロードのcgiで、上記題名の通り重複するファイル名を上書きするのではなく、重複するファイル名の末尾に番号をつけ上書きされないようにしたいのですが、どのように変更すれば良いのでしょうか教えてください。
# ファイル受信時の処理
sub file_receive {
$form_log .= "ファイルアップロードを処理しています。<br>";
if ($upload) {
# 同名のファイルがある場合、削除権限があれば上書き
if (-e $formdata{'savefile'}) {
$formdata{'savefile'} = ($formdata{'savefile'});
$form_log .= "同じファイルが存在します";
if ($delete) {
if (unlink $formdata{'savefile'}) {
$formdata{'file'} = ($formdata{'file'});
$form_log .= " 既存の".$formdata{'file'}."を削除しました。<br>";
} else {
$formdata{'file'} = ($formdata{'file'});
$form_log .= " 既存の".$formdata{'file'}."を削除できませんでした。<br>";
}
} else {
$form_log .= " 上書きには、削除権限が必要です。<br>";
}
}
# 保存(リネーム)処理
if (not -e $formdata{'savefile'}) {
if (rename $formdata{'tempfile'}, $formdata{'savefile'}) {
chmod $permission, $formdata{'savefile'} if ($permission); $formdata{'file'} = ($formdata{'file'});
$form_log .=" ".$formdata{'file'}."を保存しました。<br>";
}
}
}
お礼
出来ました!! わざわざ動作確認までしていただき本当にありがとうございました。 今回教えていただいたことを参考に勉強していきたいと思います。 ありがとうございました。