0

谁能帮我解决以下问题?这是问题所在:我以 POST 的形式让人们可以上传文件。下面的代码检查“上传”文件夹中是否有另一个同名文件。如果是这样,文件将重命名为以下示例:

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 回答