重命名多文件上传项目中的图像以对应所选图像的数量
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的第二个参数你喜欢什么(你的上传文件夹名称)。
我正在处理有关多个文件上传的一些问题。我的项目处理用户输入多个图像并保存到数据库的表单,但首先将图像临时存储在目录中以显示各种预览。在我处理图像上传的 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的第二个参数你喜欢什么(你的上传文件夹名称)。