老师看一下这是什么情况?
<?php
$arr = [];
$mimes = ["image/jpeg","image/png","image/gif"];
$exts = ["jpeg","png","jpg","gif"];
$dir = "uploads";
foreach ($_FILES as $key => $val){
//接受数据
$name = $_FILES[$key]['name'];
$type = $_FILES[$key]['type'];
$tmp_name = $_FILES[$key]['tmp_name'];
$error = $_FILES[$key]['error'];
$size = $_FILES[$key]['size'];
//错误检查
if ($error>0){
switch ($error){
case 1:
$arr[$key]= "$name.上传文件超出了upload_max_filesize";
continue 2;
case 2:
$arr[$key]= "$name.上传文件超出了表单的MAX_FILE_SIZE";
continue 2;
case 3:
$arr[$key]= "$name.文件只有部分被上传";
continue 2;
case 4:
$arr[$key]= "没有文件被上传";
continue 2;
case 6:
$arr[$key]= "$name.找不到临时目录";
continue 2;
case 7:
$arr[$key]= "$name.写入磁盘失败";
continue 2;
case 8:
$arr[$key]= "$name.上传的文件被PHP扩展程序中断";
continue 2;
default:
$arr[$key]= "$name.未知错误";
continue 2;
}
}
//检测MIME类型
if (!in_array($type,$mimes)){
$arr[$key] = "文件的类型{$type}不允许";
continue;
}
//检测扩展名是否允许
$ext = pathinfo($name,PATHINFO_EXTENSION);
if (!in_array($ext,$exts)){
$arr[$key] = "文件扩展名{$ext}不支持上传";
continue;
}
//生成随机文件名
$fileName = md5(uniqid(microtime(),true)).".".$ext;
//检测文件上传方式
if (!is_uploaded_file($tmp_name)){
$arr[$key] = "文件非法上传";
continue;
}
//移动文件
if (!is_dir($dir)){
mkdir($dir,0777,true);
}
if (!move_uploaded_file($tmp_name,$dir.DIRECTORY_SEPARATOR.$fileName)){
echo $name."文件上传失败";
continue;
}
}
if (count($arr)>0){
var_dump($arr);
}else{
echo "文件全部上传成功";
}0
收起
正在回答
2回答
您好,判断$_FILES是否为空,如果上传文件大于upload_max_filesize的大小,那么$_FILES取得的是空数组。祝学习愉快!
PHP常用技术与ThinkPHP5框架开发
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星