php - 使用 php 不同地重命名每个选定的文件

标签 php mysql loops rename

我的问题是,当我选择多个文件时,它会将所有选定的文件重命名为相同的文件,但我想将每个选定的文件重命名为稍有不同,并插入到 MySQL 和本地文件夹中。

例如

第一个选定的文件将是:

1_$date_$rand_.png

第二个选定的文件将是:

2_$date_$rand_.pnp

等等...

我也尝试过使用随机数,但它也会将每个选定的文件重命名为相同的文件。我不知道应该如何使用循环来完成它。

<小时/>

我的 php 代码重命名文件并上传到数据库:

$rand = rand(0, 99999);
$date = date('Y_m_d-H_i_s-a', time());
$count = 0;
$path = "../../images/"; // Upload directory=
$filename = $date."_".$rand.'.';

foreach ($image as $f => $imgname) {
  $ext = end((explode(".", $imgname)));
 mysqli_query($conn,"INSERT INTO images(name)
 VALUES  ('$filename$ext')");

  if(move_uploaded_file($_FILES["image"]["tmp_name"][$f], "$path/$filename$ext")) {
    $count++; // Number of successfully uploaded files
  }
}

最佳答案

使用file_exists()和计数器

$rand = rand(0, 99999);
$date = date('Y_m_d-H_i_s-a', time());
$count = 0;
$fileCounter = 0;
$path = "../../images/"; // Upload directory=
$filename = $date."_".$rand.'.';

foreach ($image as $f => $imgname) {
  $ext = end((explode(".", $imgname)));

    $fileCounter=1;

    $fullFilename = "$filename$fileCounter$ext" ;
    while(file_exists($path . '/'. $fullFilename)){
       $fileCounter ++;
       $filename = "$filename$fileCounter$ext" ;

    }

   mysqli_query($conn,"INSERT INTO images(name) VALUES ('$fullFilename')");

  if(move_uploaded_file($_FILES["image"]["tmp_name"][$f],$path . '/'.$fullFilename )) {
    $count++; // Number of successfully uploaded files
  }

}

关于php - 使用 php 不同地重命名每个选定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54891770/

相关文章:

mysql - 向 SQL 表中插入测试数据

mysql用join删除所有行

java - 文件保存 500 个从 0 到 1000 的随机数。将这些数字写入文件,然后打开文件并一一读取数字

php switch case : if we have 30 options, 我们必须创建 30 个 if 语句还是有更简单的方法?

php - 如何使我正在处理的网站加载速度更快?

php - 错误日志 : PHP Warning: A non-numeric value encountered

javascript - 如何使用 angularjs 从 localStorage 调用 "User ID"变量到 PHP?

php - 连接到 MySQL 的安全 PHP 类?

c - 如何计算字符串 C 程序中的单词和标点符号?

java - 在 do while 内嵌套 for 循环以保持玩家的回合顺序