php 文件原生上传函数 不指定

jed , 2018-3-14 09:29 , 代码编程 , 评论(0) , 阅读(2071) , Via 本站原创 | |
php 文件原生上传函数

//文件上传函数
  /*
    *文件上传函数
    *@param array  $upfile  被上传的文件信息 例如:$_FILES['myfile'];
    *@param string $path    文件上传路径
    *@param array  $typelist 允许文件上传的类型 默认空数组 表示不限
    *@param int     $maxsize  允许上传的大小限制 默认0 表示不限
    *@return  array  返回两个关联数组
      其中下标为error的值如果为true表示上传成功,false 表示失败
        info下标 表示错误信息或者是文件名
        
  */
  function fileUpload($upfile,$path,$typelist=array(),$maxsize=0){
    //初始化信息
    $path=rtrim($path,"/")."/";
    //定义一个返回结果
    $res=['error'=>false,'info'=>''];
    
    //2.判断文件上传错误号
    if($upfile['error']>0){
      switch($upfile['error']){
        case 1:$error="上传的文件超过了 php.ini 中限制大小"; break;
        case 2:$error="上传文件的大小超过了 HTML 表单中限制的大小"; break;
        case 3:$error="文件只有部分被上传。"; break;
        case 4:$error="没有文件被上传。 "; break;
        case 6:$error="找不到临时文件夹。"; break;
        case 7:$error="文件写入失败"; break;
        default:$error="未知错误";
      }
      $res['info']=$error;
      return $res;
    }
    //3.判断过滤文件的类型
    if(count($typelist)>0){//你是否限制
      //判断类型是否是typelist中的类型
      if(!in_array($upfile['type'],$typelist)){
        $res['info']="文件类型不符";
        return $res;
      }
    }
    //4.文件上传大小是否满足
             //上传文件大小   限制大小
    if($maxsize>0 && $upfile['size']>$maxsize){
      $res['info']="文件上传失败,原因:文件大小超出范围!";
      return $res;
    }
    
    //5.随机文件名
    $hz=pathinfo($upfile['name'],PATHINFO_EXTENSION);
    //var_dump($hz);
    do{
      $newfile=date("YmdHis").rand(1000,9999).".".$hz;
    }while(file_exists($path.$newfile));//判断文件是否存在
    
    //echo $newfile;
    //6.判断并执行上传
    if(is_uploaded_file($upfile['tmp_name'])){
      if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){
        $res['info']=$newfile;
        $res['error']=true;
      }else{
        $res['info']="文件上传错误!原因是:文件移动失败";
      }
    }else{
      $res['info']="不是有效的上传文件";
    }
    return $res;
    }
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]