1

我已经上传了一张图片并将该图片保存到另一个工作正常的文件夹中。但是如果它已经存在于文件夹中,我想更改图片名称,例如如果 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 */

  }

   ?>

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

4

3 回答 3

0

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

于 2013-09-07T07:13:38.813 回答
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."
?>
于 2013-09-07T07:27:26.723 回答
0

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

于 2013-09-07T07:27:57.950 回答