• 后端PHP, 封装文件上传函数


    <?php
        /*
         * 文件上传函数
         */
        function upload_single($file, $allow_type, $path, &$error, $allow_format=array(), $max_size=2000000){
            //判断文件是否有效
    
            if(!(is_array($file)&&isset($file["error"]))){
                $error="上传文件无效";
                return false;
            }
            //判断保存路径是否有效
            if(!is_dir($path)){
                $error="路径错误!";
                return false;
            }
            //判断文件上传过程中是都出错
            switch ($file["error"]){
                case 1:
                case 2:
                    $error="文件超出服务器应许大小";
                    return false;
                case 3:
                    $error="文件只上传部分";
                    return false;
                case 6:
                case 7:
                    $error="文件保存失败";
                    return false;
            }
    
            //判断mime类型
            if(!in_array($file["type"], $allow_type)){
    
                print_r($file["type"]."<->".$allow_type);
                $error="当前文件不允许上传12";
                return false;
            }
    
            //判断后缀名是否正确
            $ext=ltrim(strrchr($file["name"],"."), ".");
    
            if(!in_array($ext, $allow_format)&&!empty($allow_format)){
                $error="上传文件是不允许上传的后缀名";
                return false;
            }
    
            //判断当前文字是否满足这个函数的最大上传值
            if($file["size"]>$max_size){
                $error="上传文件过大";
                return false;
            }
            //构建名字:随机构造
            $full_name=strstr($file["type"], "/").date("YYYYmmdd");
            for($i=0;$i<4;++$i){
                $full_name.=chr(mt_rand(65,90));
            }
            //拼凑后缀
            $full_name.='.'.$ext;
            //移动到指定目录
            if(!is_uploaded_file($file["tmp_name"])){
                $error="错误, 不是上传文件";
                return false;
            }
            if(move_uploaded_file($file["tmp_name"], $path.'/'.$full_name)){
                return $full_name;
            }else{
                $error="文件移动失败";
                return false;
            }
    
        }
    
        //提供数据
    $file=$_FILES["image"];
        $path="image/";
        $allow_format=array("JPG", "JPEG");
        $allow_type=array("image/jpeg", "/image/jpg");
    $max_size=80000000;
    $error;
        if(upload_single($file, $allow_type, $path, $error, $allow_format, $max_size)){
            echo "上传成功!";
        }else{
            echo $error;
        }
  • 相关阅读:
    第二个月课堂009python之总结(002)
    python的接口自动化测试+ddt数据驱动(*****)
    python题(002)
    selenium问题归纳一:多个句柄索引会乱的问题
    多测师讲解python讲解__xlwt__模块(拓展莫模块002)
    多测师python面试题__整理和答案(001)高级讲师肖sir
    第二个月课堂012讲解 _ Unittest框架(上)_高级讲师肖sir
    多测师讲解课堂11课__selenium__错归纳_高级讲师肖sir
    ActionChains定位元素
    css使用方法
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/11253037.html
Copyright © 2020-2023  润新知