如果存在将数字附加到结束,则重命名文件名

use*_*765 18 php upload file-upload rename file-exists

我正在尝试重新命名图像的文件名(如果它存在,如果它存在,例如我的文件名是否test.jpg已存在)我想将其重命名为test1.jpg然后test2.jpg依此类推.随着代码我写了它改变我的文件名test1.jpg,然后test12.jpg任何关于修复这个的建议将是非常感谢!

PHP

$name = $_FILES['picture']['name'];
$actual_name = pathinfo($name,PATHINFO_FILENAME);
$extension = pathinfo($name, PATHINFO_EXTENSION);

$i = 1;
while(file_exists('tmp/'.$actual_name.".".$extension))
{           
    $actual_name = (string)$actual_name.$i;
    $name = $actual_name.".".$extension;
    $i++;
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*son 38

这是一个小修改,我认为应该做你想要的:

$actual_name = pathinfo($name,PATHINFO_FILENAME);
$original_name = $actual_name;
$extension = pathinfo($name, PATHINFO_EXTENSION);

$i = 1;
while(file_exists('tmp/'.$actual_name.".".$extension))
{           
    $actual_name = (string)$original_name.$i;
    $name = $actual_name.".".$extension;
    $i++;
}
Run Code Online (Sandbox Code Playgroud)


Fan*_*nto 8

受@Jason 回答的启发,我创建了一个函数,我认为它的文件名格式更短、更易读。

function newName($path, $filename) {
    $res = "$path/$filename";
    if (!file_exists($res)) return $res;
    $fnameNoExt = pathinfo($filename,PATHINFO_FILENAME);
    $ext = pathinfo($filename, PATHINFO_EXTENSION);

    $i = 1;
    while(file_exists("$path/$fnameNoExt ($i).$ext")) $i++;
    return "$path/$fnameNoExt ($i).$ext";
}
Run Code Online (Sandbox Code Playgroud)