重命名上传的文件(Rename uploaded files)

2019-10-20 11:39发布

我通过PHP上传文件。 文件的量可以被上传由被存储在数据库中的值来确定。 所以我们可以说,这个值是3,比我的代码显示了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.";     
            }
        }

Answer 1:

当你在数组文件:

$i = 1;
foreach($_FILES['file'] as $file){
    move_uploaded_file($file['tmp_name'], $i.'-'.$file['name']);
    ++$i;
}


Answer 2:

你的问题是, $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-hello.png时只算文件的数量(现在至极为2),然后下一个上传的文件获得名3-new.png不必要这个数字媒体链接采取3-wow.png



文章来源: Rename uploaded files