[英]Rename uploaded files
我正在通过php上传文件。 可以上传的文件数量由存储在数据库中的值确定。 所以说,这个值是3,比我的代码显示了三个html文件输入。 可以了 我也可以重命名一个文件。 但是,当我尝试使用多个扩展名进行此操作时,我堆叠了……新名称应为“列表元素的数量”-“基本文件名”。 例:
1-thisisanimage.jpg
2-anotherimage.jpg
3-andthisalso.jpg
我尝试过foreach,但是我觉得过于复杂了。 我还尝试了互联网上的其他脚本,但是没有一个脚本确实无法做到这一点。 有人吗 :)
if (!file_exists("uploads/".$date."-".$email."-vid-".$videoID)) {
mkdir("uploads/".$date."-".$email."-vid-".$videoID."/", 0777, true);
}
$imagecounter = 0;
$_FILES["file"] = array();
foreach ($_FILES["file"] as $file) {
$imagecounter++;
$filename = $_FILES["file"]["name"];
$file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
$file_ext = substr($filename, strripos($filename, '.')); // get file name
$filesize = $_FILES["file"]["size"];
$allowed_file_types = array('.jpg','.jpeg','.png','.gif');
if (in_array($file_ext,$allowed_file_types) && ($filesize < 200000))
{
// Rename file
$newfilename = "$imagecounter-".$file_basename . $file_ext;
if (file_exists("uploads/".$date."-".$email."-vid-".$videoID."/" . $newfilename))
{
// file already exists error
echo "You have already uploaded this file.";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/".$date."-".$email."-vid-".$videoID."/" . $newfilename);
echo "File uploaded successfully.";
}
}
当数组中有文件时:
$i = 1;
foreach($_FILES['file'] as $file){
move_uploaded_file($file['tmp_name'], $i.'-'.$file['name']);
++$i;
}
您的问题是$imagecounter
始终为0,因此,当您上载新文件时,它立即获得所有已上载文件数的值1(此请求中为一个文件)。
因此,请计算一下目标文件夹中所有已上传的文件,并增加此值+1即可使列表编号生效。
$uploadDir = "uploads/".$date."-".$email."-vid-".$videoID."/";
$fileInterator = new FilesystemIterator($uploadDir, FilesystemIterator::SKIP_DOTS);
$imagecounter = iterator_count($fileInterator);
但删除文件时要注意-例如。 您在文件夹中有以下文件:
并在仅计算文件数(现在为2)时删除2-hello.png
,然后下一个上载的文件将其命名为3-new.png
不必要),此数字已由3-wow.png
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.