PHP多文件上传函数

封装的函数

<?php
/*
 *@获取数组信息
 *@三维数组转化为二位数组
 */
function getFiles() {
   $i=0;
   foreach ($_FILES as $file) {
     if(is_string($file['name'])){
          $files[$i]=$file;
          $i++;
     }elseif(is_array($file['name'])){
       foreach ($file['name'] as $key => $value) {
          $files[$i]['name']=$file['name'][$key];
          $files[$i]['type']=$file['type'][$key];
          $files[$i]['tmp_name']=$file['tmp_name'][$key];
          $files[$i]['error']=$file['error'][$key];
          $files[$i]['size']=$file['size'][$key];
          $i++; 
       }
     }
   }
   return $files;
}
/*
*多文件上传
 */

function uploadFile($fileInfo,$flag=true,$path='./uploads',$maxSize=1048576$allowExt=array('jpeg','jpg','png','gif','wbmp')) {
    //判断错误号
    if($fileInfo['error']===UPLOAD_ERR_OK){

       //检测上传的大小
       if($fileInfo['size']>$maxSize){

          $res['msg']=$fileInfo['name'].'上传文件过大';
       }

       //检测上传文件的类型
       // $allowExt=array('jpeg','jpg','png','gif','wbmp');
        $ext=getExt($fileInfo['name']);
       if(!in_array($ext,$allowExt)){

          $res['msg']=$fileInfo['name'].'非法文件类型';

       }

       //检测是否是真实的图片类型
       // $flag=true;
       if($flag){
       if(!getimagesize($fileInfo['tmp_name'])){

           $res['msg']=$fileInfo['name'].'不是真正的图片类型';
       }
     }

        //检测文件是否是通过HTTP POST方式上传的
       if(!is_uploaded_file($fileInfo['tmp_name'])){

      $res['msg']=$fileInfo['name'].'文件不是通过HTTP POST方式上传的合法文件';

    }
       //上传文件  
     if($res) return $res;
     // $path='./uploads';
      if(!file_exists($path)){
       mkdir($path,0777,true);
       chmod($path,0777);
     }

    $uriName=getUniName();
     $destination=$path.'/'.$uriName.'.'.$ext;

     if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){
          
          $res['msg']=$fileInfo['name'].'文件移动失败';
     }
         //文件上传成功
         $res['msg']=$fileInfo['name'].'文件上传成功';
         $res['dest']=$destination;
         return $res;


    }else{

   switch ($fileInfo['error']) {
       case 1:
      $res['msg']= '上传文件超过了PHP配置文件中upload_max_filesize选项的值';
         break;
       case 2:
         $res['msg']= '超过了表单MAX_FTLE_SIZE限制的大小';
         break;
      case 3:
         $res['msg']='文件部分被上传';
         break;
      case 4:
         $res['msg']= '没有选择上传文件';
         break;
      case 6:
         $res['msg']= '没有找到临时目录';
         break;
      case 7:
      case 8:
         $res['msg']= '系统错误';
         break;
    }
         return $res;
    }
}
/*
 *得到扩展名
 */
function getExt($filename){
   return strtolower(pathinfo($filename,PATHINFO_EXTENSION));
}

/*
*得到唯一文件名
 */
function getUniName(){
   return md5(uniqid(microtime(true),true));
}

// 过滤空值,新数组输出
// $uploadFiles = array_values(array_filter($uploadFiles));

<?php
/*
 *@获取数组信息
 *@三维数组转化为二位数组
 */
function getFiles() {
   $i=0;
   foreach ($_FILES as $file) {
     if(is_string($file['name'])){
          $files[$i]=$file;
          $i++;
     }elseif(is_array($file['name'])){
       foreach ($file['name'] as $key => $value) {
          $files[$i]['name']=$file['name'][$key];
          $files[$i]['type']=$file['type'][$key];
          $files[$i]['tmp_name']=$file['tmp_name'][$key];
          $files[$i]['error']=$file['error'][$key];
          $files[$i]['size']=$file['size'][$key];
          $i++;
       }
     }
   }
   return $files;
}
/*
*多文件上传
 */

function uploadFile($fileInfo,$flag=true,$path='./uploads',$maxSize=1048576$allowExt=array('jpeg','jpg','png','gif','wbmp')) {
    //判断错误号
    if($fileInfo['error']===UPLOAD_ERR_OK){

       //检测上传的大小
       if($fileInfo['size']>$maxSize){

          $res['msg']=$fileInfo['name'].'上传文件过大';
       }

       //检测上传文件的类型
       // $allowExt=array('jpeg','jpg','png','gif','wbmp');
        $ext=getExt($fileInfo['name']);
       if(!in_array($ext,$allowExt)){

          $res['msg']=$fileInfo['name'].'非法文件类型';

       }

       //检测是否是真实的图片类型
       // $flag=true;
       if($flag){
       if(!getimagesize($fileInfo['tmp_name'])){

           $res['msg']=$fileInfo['name'].'不是真正的图片类型';
       }
     }

        //检测文件是否是通过HTTP POST方式上传的
       if(!is_uploaded_file($fileInfo['tmp_name'])){

      $res['msg']=$fileInfo['name'].'文件不是通过HTTP POST方式上传的合法文件';

    }
       //上传文件  
     if($res) return $res;
     // $path='./uploads';
      if(!file_exists($path)){
       mkdir($path,0777,true);
       chmod($path,0777);
     }

    $uriName=getUniName();
     $destination=$path.'/'.$uriName.'.'.$ext;

     if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){
          
          $res['msg']=$fileInfo['name'].'文件移动失败';
     }
         //文件上传成功
         $res['msg']=$fileInfo['name'].'文件上传成功';
         $res['dest']=$destination;
         return $res;


    }else{

   switch ($fileInfo['error']) {
       case 1:
      $res['msg']= '上传文件超过了PHP配置文件中upload_max_filesize选项的值';
         break;
       case 2:
         $res['msg']= '超过了表单MAX_FTLE_SIZE限制的大小';
         break;
      case 3:
         $res['msg']='文件部分被上传';
         break;
      case 4:
         $res['msg']= '没有选择上传文件';
         break;
      case 6:
         $res['msg']= '没有找到临时目录';
         break;
      case 7:
      case 8:
         $res['msg']= '系统错误';
         break;
    }
         return $res;
    }
}
/*
 *得到扩展名
 */
function getExt($filename){
   return strtolower(pathinfo($filename,PATHINFO_EXTENSION));
}

/*
*得到唯一文件名
 */
function getUniName(){
   return md5(uniqid(microtime(true),true));
}

 
// 过滤空值,新数组输出
// $uploadFiles = array_values(array_filter($uploadFiles));
view

<!-- multiple选择多个文件上传 -->
<input type="file" name="myFile[]" multiple="multiple"/><br>
<input type="submit" value="上传文件" /><br>
 
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>文件上传</title>
</head>
<body>
   <form action="morefile.php" method="post" enctype="multipart/form-data">
           <span>请上传您的文件:</span>
         <input type="file" name="myFile[]"/><br>
         <span>请上传您的文件:</span>
         <input type="file" name="myFile[]"/><br>
         <span>请上传您的文件:</span>
         <input type="file" name="myFile[]"/><br>
         <span>请上传您的文件:</span>
         
         <input type="submit" value="上传文件" /><br>
   </form>

</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值