热门IT资讯网

优化后的单文件上传函数

发表于:2024-11-30 作者:热门IT资讯网编辑
编辑最后更新 2024年11月30日,$fileInfo = @$_FILES ['myFile'];//接收表单上传的文件//5个参数中,第一个是必须,后面都有默认值upload($fileInfo,"626800",false,"im
$fileInfo = @$_FILES ['myFile'];//接收表单上传的文件//5个参数中,第一个是必须,后面都有默认值upload($fileInfo,"626800",false,"imgs",array("txt"));function upload($fileInfo,$maxSize=2097152,$flag=true,$path="upload",$allowedExt=array("jpeg","jpg","png","gif")) {        //$maxSize = 2 * 1024 * 1024; // 上传文件大小限制在2M内        //$flag = true;               // 判断错误号        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;                }                exit ( $mes );        }        // 判断文件类型        // $ext=strtolower(end(explode(".", $fileInfo['name']))); //得到后缀名,或者用下面的方法        $ext = pathinfo ( $fileInfo ['name'], PATHINFO_EXTENSION );//         $allowedExt = array (//                         "jpeg",//                         "jpg",//                         "png",//                         "gif" //         );        //        if(!is_array($allowedExt)){                exit("文件扩展名不是数组");        }        if (! in_array ( $ext, $allowedExt )) {                exit ( "非法文件类型" );        }        // print_r(getp_w_picpathsize($fileInfo['tmp_name']));exit;        // 判断是否是真实的图片文件类型,如果不需要做此检测可以设定$flag为false        if ($flag) {                if (! getp_w_picpathsize ( $fileInfo ['tmp_name'] )) {                        exit ( "上传文件不是真实的图片文件" );                }        }        // 判断文件大小        if ($fileInfo ['size'] > $maxSize) {                exit ( "上传文件大小超过本站限制" );        }        // 是否是通过POST方式上传,需要检测的是临时文件        // var_dump(is_uploaded_file($fileInfo['tmp_name']));exit;        if (! is_uploaded_file ( $fileInfo ['tmp_name'] )) {                exit ( "非法上传方式" );        }        // 检测完毕后移动文件        //$path = "upload";        if (! file_exists ( $path )) {                mkdir ( $path, 0755, true );                chmod ( $path, 0755 );        }        $uniqName=md5 ( uniqid ( microtime ( true ), true ) ) . "." . $ext;        $destination = $path . "/" . $uniqName;        if (! @move_uploaded_file ( $fileInfo ['tmp_name'], $destination )) {                // 加上@ 是为了不显示溢出错误                exit ( "文件上传失败" );        }                echo "文件上传成功!";}


0