使用php重命名文件夹中的重复文件

时间:2012-06-17 00:40:55

标签: php

谁能帮我解决以下问题?这是问题:在一个表单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

......等等。

如何修改代码以达到该结果? 提前谢谢,抱歉我的新手式问题。我真的是新手! :)

1 个答案:

答案 0 :(得分:7)

只需更改$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;