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