Home >Backend Development >PHP Tutorial >How to upload multiple files in PHP

How to upload multiple files in PHP

墨辰丷
墨辰丷Original
2018-05-25 10:51:142055browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn