如果上传两次,请重命名图像名称?

时间:2013-09-07 07:00:09

标签: php jquery

我上传了一张图片,并将该图片保存到另一个文件夹中。但是如果图像名称已经存在于文件夹中,我想更改图像名称,如果image.jpg已经存在,我需要将其重命名为image1.jpg然后到image2.jpg等等。我的代码是

<?php
       $name = $_FILES['uploaded']['name'];
       $actual_name = pathinfo($name,PATHINFO_FILENAME);
       $original_name = $actual_name;
       $extension = pathinfo($name, PATHINFO_EXTENSION);

      $i = 1;
      while(file_exists('upload/'.$actual_name.".".$extension))
        {       
           $actual_name = (string)$original_name.$i;
           $name = $actual_name.".".$extension;
           $i++;
          /* code for uploading */

  }

   ?>

使用此代码,我可以将文件名更改为image1.jpg,如果我上传image.jpg两次,但如果我在第三次上传uploadimage.jpg它不会重命名为image3.jpg。我认为问题出在循环我无法弄清楚它可以帮助我解决它。 提前谢谢。

3 个答案:

答案 0 :(得分:0)

因为在每次上传时,$ i被初始化为1,所以如果文件存在,它将保存为image2.jpg,在下次上传时也会重复。 目录中存在相同文件名的循环并递增$ i,然后移动上传的文件

答案 1 :(得分:0)

<?php
$name = $_FILES['uploaded']['name'];
$actual_name = pathinfo($name,PATHINFO_FILENAME);
$original_name = $actual_name;
$extension = pathinfo($name, PATHINFO_EXTENSION);
$target = "upload/";

$i = 1;
while(file_exists($target.$actual_name.".".$extension)){       
    $actual_name = $original_name.$i;
    $name = $actual_name.".".$extension;
    $i++;
}

$target = $target.basename( $name ) ; 
echo move_uploaded_file($_FILES['uploaded']['tmp_name'], $target) ? 
        "The file ". basename( $_FILES['uploaded']['name']). " has been        uploaded"
        : "Sorry, there was a problem uploading your file."
?>

答案 2 :(得分:0)

您可以使用“按唯一名称上传文件”    http://shwetabh.org/blog/file-upload-by-unique-name/