上传多个文件并重命名 - PHP

8

我正在上传多个文件。主要功能正常,但我需要更改上传文件的名称,例如:name1.jpgname2.jpsname3.jpg,...

$i = 1;
if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/name'.$i++.'.'.$extension)){
     echo '{"status":"success"}';
     exit;
}

上传的文件数量增加,编号 $i 应随之增长。

1个回答

8
你需要一个循环:
if(isset($_FILES['files'])){

     $name_array = $_FILES['files']['name'];
     $tmp_name_array = $_FILES['files']['tmp_name'];
     // Number of files
     $count_tmp_name_array = count($tmp_name_array);

     // We define the static final name for uploaded files (in the loop we will add an number to the end)
     $static_final_name = "name";

     for($i = 0; $i < $count_tmp_name_array; $i++){
          // Get extension of current file
          $extension = pathinfo($name_array[$i] , PATHINFO_EXTENSION);

          // Pay attention to $static_final_name 
          if(move_uploaded_file($tmp_name_array[$i], "uploads/".$static_final_name.$i.".".$extension)){
               echo $name_array[$i]." upload is complete<br>";
          } else {
               echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
          }

     }

}

如果我想使用时间戳而不是.$static_final_name.$i.怎么办? - Samuel Ramzan
@SamuelRamzan,你可能会遇到问题,因为时间戳每秒钟都在变化,而且有可能在同一秒钟上传多个文件,所以你会发现它们会被覆盖。 - tomloprod
你可以使用:$uniqueFileName = uniqid(mt_rand(), true);。请参见我在此处的答案:https://dev59.com/sXRB5IYBdhLWcg3w77on#41594109 - tomloprod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接