如果文件已经存在,如何重命名该文件

时间:2014-05-29 16:50:24

标签: php

我为上传的文件创建了一个自动添加_(编号)的功能(如果它们已经存在)。但是我遇到了一个问题,如果我上传像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';
    }
}

2 个答案:

答案 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++;
}