Home >Backend Development >PHP Tutorial >How to upload multiple files in PHP
This article mainly introduces the relevant information on the PHP implementation of uploading multiple file sample codes. It has certain reference value. Interested friends can refer to it.
Upload multiple files
1. Before operating multi-file information, you need to build the file information, and use the buildInfo function to convert the three-dimensional array into a two-dimensional array that is convenient for file operations.
function buildInfo(){ $i = 0; foreach ($_FILES as $v){ //判断是否是单文件 if(is_string($v['name'])){ $files[$i] = $v; $i++; }else{ //多文件 foreach ($v['name'] as $key => $value){ $files[$i]['name'] = $value; $files[$i]['size'] = $v['size'][$key]; $files[$i]['tmp_name'] = $v['tmp_name'][$key]; $files[$i]['type'] = $v['type'][$key]; $files[$i]['error'] = $v['error'][$key]; $i++; } } } return $files; }
The judgment between single file and multiple files lies in the type of file array, single file (two-dimensional array), multiple files (three-dimensional array).
2. File upload function and parameters
Copy code The code is as follows:
function uploadFiles ($path = "uploads", $allowExt = array("jpg", "gif", "png", "wbmp"), $maxSize = 1048576, $imgFlag = true)
path , save the directory. allowExt, array of allowed extensions. maxSizeThe maximum upload file size. imgFlag, image file identifier.
3. Determine whether the directory where the file is saved exists
if(!file_exists($path)){ mkdir($path, 0777, true); }
4. Pass in the constructed file information and save it to files
$i = 0; $files = buildInfo();
5. Determine the error type of the file
foreach ($files as $file){ if($file['error'] == UPLOAD_ERR_OK){ }else{ switch ($file['error']){ case 1: $mes = "超过配置文件上传文件大小"; break; case 2: $mes = "超过了表单设置"; break; case 3: $mes = "文件部分被上传"; break; case 4: $mes = "没有文件上传"; break; case 6: $mes = "没找到临时目录"; break; case 7: $mes = "文件不可写"; break; case 8: $mes = "由于PHP的扩展程序中断了文件上传"; break; }
6.Restrict the file type
if($file['error'] == UPLOAD_ERR_OK){ $ext = getExt($file['name']); if(!in_array($ext, $allowExt)){ exit("非法文件类型"); }
7. Restrict whether the picture type is true
if($imgFlag){ if(!getimagesize($file['tmp_name'])){ exit("不是真的图片类型"); } }
8. Determine the file size
if($file['size'] > $maxSize){ exit("文件过大"); }
9. Determine whether the file is uploaded through post
if(!is_uploaded_file($file[‘tmp_name'])){ exit(“文件不是通过HTTP POST上传”); }
10. Rename the file (Unique and non-duplicate) and save to the target directory
$filename = getUniName().".".$ext; $destination = $path."/".$filename; if(move_uploaded_file($file['tmp_name'], $destination)){ $mes = "文件上传成功"; $file['name'] = $filename; unset($file['error'], $file['tmp_name']); $uploadedFiles[$i] = $file; $i++; }
Rewrite the name in the file information array, delete the variables file['error'] and file[ 'tmp_name']. Finally, save the successfully uploaded files to the uploadedFiles array.
The above is the entire content of this article, I hope it will be helpful to everyone's study.
Related recommendations:
In phpUpload multiple filesmax_file_uploads limit issue
Solution to the problem of Uploading multiple filesmax_file_uploads limitation in
########### Sample code for multiple images ###########################
The above is the detailed content of How to upload multiple files in PHP. For more information, please follow other related articles on the PHP Chinese website!