为什么上传错误的时候,不输出错误信息?

来源:4-1 文件上传类封装(一)

雨之赞歌

2019-03-23 13:21:23

<?php
$inputName = 'upload_file';
$White_MIME = ["image/jpeg","image/png","image/gif"]; //MIME白名单
$White_EXT = ["jpeg","jpg","png","gif"];  //扩展名白名单
$local_dir = "./upload";  //本地目录名
//当$_FILES有接受数据时
if (!empty($_FILES[$inputName])){
    //接受数据,保存进变量
    $name = $_FILES[$inputName]['name'];
    $type = $_FILES[$inputName]['type'];
    $tmp_name = $_FILES[$inputName]['tmp_name'];
    $error = $_FILES[$inputName]['error'];
    $size = $_FILES[$inputName]['size'];
    $file_ext = pathinfo($name,PATHINFO_EXTENSION);     //文件扩展名
    //错误信息常量数组
    define('ERRORS', [
        UPLOAD_ERR_INI_SIZE => "上传文件的大小{$size}超过了upload_max_filesize!",
        UPLOAD_ERR_FORM_SIZE => "上传文件的大小{$size}超过了MAX_FILE_SIZE!",
        UPLOAD_ERR_PARTIAL => "文件只有部分被上传!",
        UPLOAD_ERR_NO_FILE => "没有文件被上传!",
        UPLOAD_ERR_NO_TMP_DIR => "文件找不到临时目录!",
        UPLOAD_ERR_CANT_WRITE => "文件写入磁盘失败!",
        UPLOAD_ERR_EXTENSION => "上传的文件被PHP扩展程序阻止!",
        9 => "上传文件的MIME类型不允许!",
        10 => "上传文件的扩展名{$file_ext}不允许!",
        11 =>"文件非法上传!",
        12 => "文件上传出错!",
      ]);
    //检查错误
    $Happen_error = [];  //错误信息数组
    function setError($error){
        $Happen_error[]=$error;
    }
    if ($error > 0){
        switch ($error){
            case 1:
                setError(ERRORS[1]);
                print_r($Happen_error);
                exit;
            case 2:
                setError(ERRORS[2]);
                print_r($Happen_error);
                exit;
            case 3:
                setError(ERRORS[3]);
                print_r($Happen_error);
                exit;
            case 4:
                setError(ERRORS[4]);
                print_r($Happen_error);
                exit;
            case 6:
                setError(ERRORS[6]);
                print_r($Happen_error);
                exit;
            case 7:
                setError(ERRORS[7]);
                print_r($Happen_error);
                exit;
            case 8:
                setError(ERRORS[8]);
                print_r($Happen_error);
                exit;
        }
    }
    //限制MIME类型
    if (!in_array($type,$White_MIME)){
        setError(ERRORS[9]);
        print_r($Happen_error);
        exit;
    }
    //限制扩展名
    if (!in_array($file_ext,$White_EXT)){
        setError(ERRORS[10]);
        print_r($Happen_error);
        exit;
    }
    //生成随机文件名
    $rand_File_Name = md5(uniqid(microtime(),true)).".".$file_ext;
    //限制为POST提交
    if (!is_uploaded_file($tmp_name)){
        setError(ERRORS[11]);
        print_r($Happen_error);
        exit;
    }
    //移动文件
    if (!is_dir($local_dir)){
        mkdir($local_dir,0777,true);
    }
    $New_dir = $local_dir.DIRECTORY_SEPARATOR.$rand_File_Name;
    if (!move_uploaded_file($tmp_name,$New_dir)){
        setError(ERRORS[12]);
        print_r($Happen_error);
        exit;
    }else{
        echo "文件全部上传成功";
    }
}


写回答

1回答

guly

2019-03-25

你好,建议修改代码如下:

<?php
$inputName = 'upload_file';
$White_MIME = ["image/jpeg","image/png","image/gif"]; //MIME白名单
$White_EXT = ["jpeg","jpg","png","gif"];  //扩展名白名单
$local_dir = "./upload";  //本地目录名
//当$_FILES有接受数据时
if (!empty($_FILES[$inputName])){
    //接受数据,保存进变量
    $name = $_FILES[$inputName]['name'];
    $type = $_FILES[$inputName]['type'];
    $tmp_name = $_FILES[$inputName]['tmp_name'];
    $error = $_FILES[$inputName]['error'];
    $size = $_FILES[$inputName]['size'];
    $file_ext = pathinfo($name,PATHINFO_EXTENSION);     //文件扩展名
    //错误信息常量数组
    define('ERRORS', [
        UPLOAD_ERR_INI_SIZE => "上传文件的大小{$size}超过了upload_max_filesize!",
        UPLOAD_ERR_FORM_SIZE => "上传文件的大小{$size}超过了MAX_FILE_SIZE!",
        UPLOAD_ERR_PARTIAL => "文件只有部分被上传!",
        UPLOAD_ERR_NO_FILE => "没有文件被上传!",
        UPLOAD_ERR_NO_TMP_DIR => "文件找不到临时目录!",
        UPLOAD_ERR_CANT_WRITE => "文件写入磁盘失败!",
        UPLOAD_ERR_EXTENSION => "上传的文件被PHP扩展程序阻止!",
        9 => "上传文件的MIME类型不允许!",
        10 => "上传文件的扩展名{$file_ext}不允许!",
        11 =>"文件非法上传!",
        12 => "文件上传出错!",
    ]);
    //检查错误
    $Happen_error = [];  //错误信息数组
//    function setError($errors){
//        $Happen_error[]=$errors;
//    }
    if ($error > 0){
        switch ($error){
            case 1:
                exit(ERRORS[1]);
            case 2:
                exit(ERRORS[2]);
            case 3:
                exit(ERRORS[3]);
            case 4:
                exit(ERRORS[4]);
            case 6:
                exit(ERRORS[6]);
            case 7:
                exit(ERRORS[7]);
            case 8:
                exit(ERRORS[8]);
        }
    }
    //限制MIME类型
    if (!in_array($type,$White_MIME)){
        setError(ERRORS[9]);
        print_r($Happen_error);
        exit;
    }
    //限制扩展名
    if (!in_array($file_ext,$White_EXT)){
        setError(ERRORS[10]);
        print_r($Happen_error);
        exit;
    }
    //生成随机文件名
    $rand_File_Name = md5(uniqid(microtime(),true)).".".$file_ext;
    //限制为POST提交
    if (!is_uploaded_file($tmp_name)){
        setError(ERRORS[11]);
        print_r($Happen_error);
        exit;
    }
    //移动文件
    if (!is_dir($local_dir)){
        mkdir($local_dir,0777,true);
    }
    $New_dir = $local_dir.DIRECTORY_SEPARATOR.$rand_File_Name;
    if (!move_uploaded_file($tmp_name,$New_dir)){
        setError(ERRORS[12]);
        print_r($Happen_error);
        exit;
    }else{
        echo "文件全部上传成功";
    }
}

如果解决您的问题请采纳,祝学习愉快!

0

0 学习 · 3372 问题

查看课程