繁体   English   中英

重命名上传的文件

[英]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);

但删除文件时要注意-例如。 您在文件夹中有以下文件:

  • 1-test.png
  • 2-hello.png
  • 3-wow.png

并在仅计算文件数(现在为2)时删除2-hello.png ,然后下一个上载的文件将其命名为3-new.png不必要),此数字已由3-wow.png

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM