zoukankan      html  css  js  c++  java
  • 一个简单的PHP上传函数

    /**
    * $fileInfo为当前上传的file的名字,例如:$_FILES['pic']
    * $uploadPath为将要上传的路径
    * $allowExt为允许的扩展名称
    * $maxSize为最大为多少个字节(B)这个为2M
    * $flag默认为true检测文件是否为真实的文件类型
    * @return 错误则返回json_encode的array('msg'=>'错误信息','status'=>'0')
    *       正确则返回json_encode的array('newName'=>'图片的名称及相对路径','size'=>'图片的大小','type'=>'图片的类型','status'=>'1')
    *
    */
    function uploadFile($fileInfo,$uploadPath = './uploads',$allowExt=array('jpeg','jpg','png','gif'),$maxSize = 2097152, $flag=true) {
            $arr = array();
            //判断错误号  
            if($fileInfo['error'] > 0) {
                //匹配错误信息  
                switch($fileInfo['error']) {
                    case 1:  
                        $mes = '上传文件超过了PHP配置文件中upload_max_filesize选项的值';  
                        break;  
                    case 2:  
                        $mes = '超过了表单MAX_FILE_SIZE限制的大小';  
                        break;  
                    case 3:  
                        $mes = '文件部分被上传';  
                        break;  
                    case 4:  
                        $mes = '没有选择上传文件';  
                        break;  
                    case 6:  
                        $mes = '没有找到临时目录';  
                        break;  
                    case 7:  
                    case 8:  
                        $mes = '系统错误';  
                        break;  
                }
                $arr['msg'] = $mes;
                $arr['status'] = '0';
                return json_encode($arr);
            }  
    
            $ext = pathinfo($fileInfo['name'], PATHINFO_EXTENSION);  
            //$allowExt = array('jpeg', 'jpg', 'png', 'gif');  
            if(!is_array($allowExt)) {  
                $arr['msg'] = '系统错误';
                $arr['status'] = '0';
                return json_encode($arr);
            }  
    
            //检测上传文件的类型  
            if(!in_array($ext, $allowExt)) {  
                $arr['msg'] = '非法文件类型';
                $arr['status'] = '0';
                return json_encode($arr);
            }  
            //$maxSize = 2097152; //2M  
            //检测上传文件大小是否符合规范  
            if($fileInfo['size']>$maxSize) {  
                $arr['msg'] = '上传文件过大';
                $arr['status'] = '0';
                return json_encode($arr);
            }  
            //检测图片是否为真实的图片类型  
            //$flag = true;  
            if($flag) {  
                if(!getimagesize($fileInfo['tmp_name'])) {  
                    $arr['msg'] = '不是真实的文件类型';
                    $arr['status'] = '0';
                    return json_encode($arr);
                }  
            }  
    
            //检测文件是否是通过HTTP POST方式上传上来的  
            if(!is_uploaded_file($fileInfo['tmp_name'])) {  
                $arr['msg'] = '文件不是通过HTTP POST方式上传的';
                $arr['status'] = '0';
                return json_encode($arr);
            }  
            //$uploadPath = 'uploads';  
            if(!file_exists($uploadPath)) {  
                mkdir($uploadPath, 0777, true);  
                chmod($uploadPath, 0777);  
            }  
            $uniName = md5(uniqid(microtime(true), true)) . '.' . $ext;  
            $destination = $uploadPath . '/' . $uniName;  
    
            if(!@move_uploaded_file($fileInfo['tmp_name'], $destination)) {  
                $arr['msg'] = '文件移动失败';
                $arr['status'] = '0';
                return json_encode($arr);
            }  
    
           $arr['newName'] = $destination;
           $arr['size'] = $fileInfo['size'];
           $arr['type'] = $fileInfo['type'];
           $arr['status'] = '1';
           return json_encode($arr);
        }
  • 相关阅读:
    001 分布式系统
    024 RabbitTemplate组件
    023 RabbitAdmin组件
    022 spring与Rabbitmq整合
    011 mandatory参数
    这样自己组装数据,醉了,
    cool,
    swift,
    page enable,
    构建 HTTPserver,
  • 原文地址:https://www.cnblogs.com/aoxueshou/p/6723560.html
Copyright © 2011-2022 走看看