我为上传的文件创建了一个自动添加_(编号)的功能(如果它们已经存在)。但是我遇到了一个问题,如果我上传像image_1.jpg这样的图像,它将转向image_1_1.jpg。如何使它转向image_2.jpg。这是我的功能:
$scan=scandir($destination);
$destination='C:\xampp\htdocs\test\images\\';
function checkExist($name)
{
global $scan;
if(in_array($name,$scan))
{
$findDot=strpos($name,'.');
$base=substr($name,0,$findDot);
$extension=substr($name,$findDot);
$i=1;
$newName=$base.'_'.$i++.$extension;
echo $newName;
//the upload image will be renamed to .... in order to avoid same name
}
else
{
echo 'not found';
}
}
答案 0 :(得分:0)
如果新文件名与字符串匹配,您可以使用preg_match
进行检查。即:
preg_match("/^[\w]+\_+[\d]+.jpg/", $uploadedFile);
如果是,那么拆分它,删除最后一个数字......
答案 1 :(得分:0)
在上传到服务器之前,有几种方法可以在PHP中重命名图像。附加时间戳,唯一ID,图像尺寸加随机数等。
首先,检查托管图像文件夹中是否存在图像文件名,否则上传它。 while循环检查图像文件名是否存在,并附加一个唯一的ID,如下所示...
$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++;
}