【问题标题】:Rename each selected files differently using php使用 php 以不同方式重命名每个选定的文件
【发布时间】:2019-07-20 08:47:15
【问题描述】:

我的问题是当我选择多个文件时,它会将所有选定的文件重命名为相同的名称,但我想将每个选定的文件重命名为不同的名称并插入 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
  }
}

【问题讨论】:

  • 您只定义一次文件名,将$filename = $date."_".rand(0, 99999).'.'; 移动到循环内$ext 之前。

标签: php mysql loops rename


【解决方案1】:

使用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
  }

}

【讨论】:

  • 那不行,你的代码也有语法错误。
  • $filename_$fileCounter_$ext 抛出错误,我将其修复为$filename$fileCounter$ext,但我的问题是现在它仍然相同,我的意思是它没有重命名每个文件。另外,路径是在文件名之前插入数据库的,但我不希望这样。
  • 我更新了,它会给所有文件加1,如果文件存在,它会使用2,等等......等等。
  • 好吧,现在看起来不错,但它删除了扩展之前的点,所以我 "$filename$fileCounter$ext",进入这个 "$filename$fileCounter"."."."$ext",因为现在它在扩展之前添加点:) 另外我更改了 @987654327 @到$fileCounter ++; $fileCounter
  • 是的,$fileCounter ++; $filename ==> $fileCounter ++; $fullFilename =
猜你喜欢
  • 2021-02-05
  • 2020-01-27
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多