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

时间:2013-04-21 21:43:07

标签: php file-upload upload rename file-exists

我尝试重新命名图片的文件名(如果文件已存在,如果它已存在,请说我的文件名是test.jpg并且它已经存在我想将其重命名为{ {1}}然后test1.jpg等等。使用代码,我已经写了更改我的文件名,如test2.jpg然后test1.jpg,任何有关修复此问题的建议都将非常感谢!

PHP

test12.jpg

3 个答案:

答案 0 :(得分: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++;
}

答案 1 :(得分:4)

受到@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";
}

答案 2 :(得分:1)

在上传到服务器之前,有几种方法可以在PHP中重命名图像。 附加时间戳,唯一ID,图片尺寸加随机数等。您可以全部查看here

首先,检查托管图像文件夹中是否存在图像文件名,否则上传它。 while循环检查图像文件名是否存在,并附加一个唯一的ID,如下所示...

/**
 * Interface for function that takes two numbers as arguments, and returns
 * a number.
**/
interface TwoNumberFunction {
    (x: number, y: number): number,
}

// simple function: adds two numbers
function add(x: number, y: number): number {
    return x + y;
}

// 'add' is a function that takes two numbers and returns a
// number, so it matches the interface's requirements:
const func: NumberFunction = add;
func(1, 2); // = 3

查看更多图片renaming tactics