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