重命名多文件上传项目中的图像以对应所选图像的数量

Renaming images in a multi-file upload project to correspond with number of images selected

我正在处理有关多个文件上传的一些问题。我的项目处理用户输入多个图像并保存到数据库的表单,但首先将图像临时存储在目录中以显示各种预览。在我处理图像上传的 class 中,我试图重命名图像,如下所示。

如果我一次上传一张图片,预览会起作用,并且每张图片都是唯一的,具有唯一的名称。但是,如果我在 selecting 图像时单击上传按钮并按住控件,即一次 select 多张图像,它们都保存为相同的名称,并且预览的图像显示我的第一张图像的重复图像select编辑。

我如何添加与上传的图片数量相对应的数字,如'name-of-image-1.jpg','name-of-image-2.jpg',等等?

protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,$index = null, $content_range = null)     
{
    $file = new \stdClass();
    $file->name = $this->generate_unique_filename($name);   
    ... //more code
}


protected function generate_unique_filename($filename = "")
{

    $extension = "";
    if ( $filename != "" )
    {
        $extension = pathinfo($filename , PATHINFO_EXTENSION);

        if ( $extension != "" )
        {
            $extension = "." . $extension;
        }
    }
    $filename = getmypid() . '_'.time();

    return $filename;
}

在您上传文件的情况下,单个进程 ID 正在处理所有请求,因此每张图片都具有相同的名称,即相同的(进程 ID + 时间)。

$文件名 = getmypid() 。 '_'.time(); (最好使用 microtime())

您可以像这样重命名文件并添加连字符(添加的数字为 0、1、2 等)。

//html

<input name="upload[]" type="file" multiple="multiple" />

//php

for($i=0; $i<count($_FILES['upload']['name']); $i++) 

       {
          $tmpFilePath = $_FILES['upload']['tmp_name'][$i];

      if ($tmpFilePath != "")
        {

          $oldFile= $_FILES['upload']['name'][$i];
          $old_name=pathinfo($oldFile);
          $add_new_name = 'new-image-'.$i.'.'.$old_name['extension'];

/* or use   $add_new_name = microtime().'-'.$i.'.'.$old_name['extension'];*/

    if(move_uploaded_file($tmpFilePath, "./youruploadfolder/".$add_new_name))
  { 
       //rest of the code here

        }
      }
    }

设置move_uploaded_file的第二个参数你喜欢什么(你的上传文件夹名称)。