谁能帮我解决以下问题?这是问题:在一个表单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
......等等。
如何修改代码以达到该结果? 提前谢谢,抱歉我的新手式问题。我真的是新手! :)
垫
答案 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;