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

mat*_*tew -1 php

谁能帮我解决以下问题?这是问题:在一个表单POST我让人们可以上传文件.下面的代码检查"uploads"文件夹中是否有另一个具有相同名称的文件.如果是这样,文件将重命名为此示例:

hallo.txt
1_hallo.txt
2_hallo.txt
Run Code Online (Sandbox Code Playgroud)

... 等等.

这是使用的代码:

$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;
Run Code Online (Sandbox Code Playgroud)

我想以不同的方式重命名文件.渐进数字应该在文件之后,当然,在扩展之前.这是之前的例子,但是我想要的方式:

hallo.txt
hallo_1.txt
hallo_2.txt
Run Code Online (Sandbox Code Playgroud)

... 等等.

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

Pau*_*aul 7

只需改变$FinalFilename:

$FinalFilename = pathinfo($OriginalFilename, PATHINFO_FILENAME) . '_' . $FileCounter++ . '.' . pathinfo($OriginalFilename, PATHINFO_EXTENSION);
Run Code Online (Sandbox Code Playgroud)

或者(如果你有很多具有相同名称的文件并经常迭代多次,那就更好了):

$filename = pathinfo($OriginalFilename, PATHINFO_FILENAME);
$extension =  pathinfo($OriginalFilename, PATHINFO_EXTENSION);
while (file_exists( 'uploads/'.$FinalFilename ))
    $FinalFilename = $filename . '_' . $FileCounter++ . '.' . $extension;
Run Code Online (Sandbox Code Playgroud)

  • 我只喜欢一个衬里!:) (2认同)