后端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;
    }
原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/11253037.html