PHP文件上传错误代码,状态测试,调试

本文主题,处理文件上传时遇到的各种问题
思想:利用超全局变量$_FILES所带的['error']状态码确定问题
关于本文的一些关键字的定义,一定要注意了!!!
  • $_FILES['userfile']['error']
    userfiel:上传文件时input表单name
    error:这个是$_FILES自带的。不用管;下面的程序会给你说明这是个什么东西
  • move_uploaded_file():
    此函数仅用于通过 HTTP POST 上传的文件。
    如果目标文件已经存在,将会被覆盖。
$code = $_FILES['userfile']['error'];
if( $code > 0) { //判断文件是否成功上传到服务器,0表示上传成功
    echo 'Error: '.$code;

    switch ( $code  ) {
        case UPLOAD_ERR_OK:
            //0:没有错误,上传成功的文件。
            $response = 'There is no error, the file uploaded with success.';
            break;
        case UPLOAD_ERR_INI_SIZE:
            //1:上传文件在php.ini中超过upload_max_filesize指令
            $response = 'The uploaded file exceeds the upload_max_filesize directive in php.ini.';
            break;
        case UPLOAD_ERR_FORM_SIZE:
            //2:上传的文件超过了在HTML表单中指定的max_file_size指令。
            $response = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.';
            break;
        case UPLOAD_ERR_PARTIAL:
            //3:上传的文件只是部分上传。
            $response = 'The uploaded file was only partially uploaded.';
            break;
        case UPLOAD_ERR_NO_FILE:
            //4:没有上传文件。
            $response = 'No file was uploaded.';
            break;
        case UPLOAD_ERR_NO_TMP_DIR:
            //6:缺少一个临时文件夹中。在PHP 4.3.10和PHP 5.0.3中引入。
            $response = 'Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.';
            break;
        case UPLOAD_ERR_CANT_WRITE:
            //7:未能将文件写入磁盘。
            $response = 'Failed to write file to disk. Introduced in PHP 5.1.0.';
            break;
        case UPLOAD_ERR_EXTENSION:
            //8:PHP扩展停止了文件上传。PHP没有提供一种方法来确定是哪个扩展导致了文件上载停止
            $response = 'A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop;';
            break;
        default:
            //未知的错误
            $response = 'Unknown error';
            break;
    }
    echo $response;

    exit; //如果$_FILES['userfile']['error']大于0都是有错误,输出错误信息并退出程序
}else{
    echo "success".$code;
    $file = $_FILES['userfile'];
    var_dump($file);
    die;
}
  • 另外附上我的一个上传文件函数;自我BB一下:简直是好用的不要不要的。
/*图片上传,可改动文件名加密算法*/
    public function uploadFile($file, $path, $allow_type){
        $file = $_FILES[$file];
        if($file['error'] == 0){
            $name = $file['name'];
            /*得到上传文件的类型,并且都转化成小写*/
            $file_type = strtolower(substr($name,strrpos($name,'.')+1));
            if(!in_array($file_type, $allow_type)){
                return "请上传允许的格式文件";
            }
            /*上传文件的存放路径*/
            $upload_path = $path.date('Y-m-d').'/';
            if( !file_exists($upload_path) ){
                mkdir($upload_path,0, true);
            }
            $sql_url = $upload_path.md5($name.time().rand(4,100) ).'.'.$file_type;
            if( move_uploaded_file($file['tmp_name'], $sql_url) ){
                /*将状态码返回即可,解偶。将需要进行的操作放外面*/
                return json_encode(['code'=>$file['error'],'data'=>$sql_url],JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT );
            }else{
                return json_encode(['code'=>$file['error'],'data'=>"上传失败,未知错误!"],JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT );
            }
        }else{
            return json_encode(['code'=>$file['error'],'data'=>"上传失败,错误代码:"],JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT );
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,586评论 19 139
  • Cookie php可以在用户感知不到的情况下支持HTTP cookie,cookie是在客户端浏览器存储的用户来...
    小羊羊爱吃饭阅读 417评论 0 0
  • 众所周知,文件上传在一些网站应用中是必不可少的一部分。比如个人博客上传个性头像,一些论坛分享好的学习资料等,这就涉...
    liuboxx1阅读 719评论 0 0
  • 《一个艺伎的回忆》中,小百合多次提到妈妈的账本。小百合从小被妈妈买来,作为储备人才,生活在艺妓馆。本质上,她已经不...
    清霞仙子阅读 640评论 0 3
  • 思思宝贝,随着你慢慢长大了。可能妈妈的教育方式也越来越不一样了,随着妈妈性格的改变,我相信这样的相处会让你很不开心...
    思思MS阅读 211评论 0 0

友情链接更多精彩内容