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