0

次の問題を解決するのを誰が手伝ってくれますか?ここに問題があります:私が人々にファイルをアップロードできるようにしたPOSTの形式で。以下のコードは、「uploads」フォルダに同じ名前の別のファイルがあるかどうかを確認します。その場合、ファイルの名前は次のように変更されます。

hallo.txt
1_hallo.txt
2_hallo.txt

... 等々。

使用されるコードは次のとおりです。

$OriginalFilename = $FinalFilename = $_FILES['uploaded']['name'];
// rename file if it already exists by prefixing an incrementing number
$FileCounter = 1;
while (file_exists( 'uploads/'.$FinalFilename ))
$FinalFilename = $FileCounter++.'_'.$OriginalFilename;

別の方法でファイルの名前を変更したいと思います。プログレッシブ番号は、ファイルの後、そしてもちろん、拡張の前にある必要があります。これは以前と同じ例ですが、私が望む方法で:

hallo.txt
hallo_1.txt
hallo_2.txt

... 等々。

その結果に到達するようにコードを変更するにはどうすればよいですか?よろしくお願いします。初心者向けの質問でごめんなさい。私は本当に初心者です!:)

マット

4

1 に答える 1

8

変更するだけ$FinalFilenameです:

$FinalFilename = pathinfo($OriginalFilename, PATHINFO_FILENAME) . '_' . $FileCounter++ . '.' . pathinfo($OriginalFilename, PATHINFO_EXTENSION);

または(同じ名前のファイルがたくさんあり、多くの場合、複数回繰り返す場合に適しています):

$filename = pathinfo($OriginalFilename, PATHINFO_FILENAME);
$extension =  pathinfo($OriginalFilename, PATHINFO_EXTENSION);
while (file_exists( 'uploads/'.$FinalFilename ))
    $FinalFilename = $filename . '_' . $FileCounter++ . '.' . $extension;
于 2012-06-17T00:45:49.613 に答える