为什么上传错误的时候,不输出错误信息?
来源: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回答
你好,建议修改代码如下:
<?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 "文件全部上传成功"; } }
如果解决您的问题请采纳,祝学习愉快!
相似问题