class="java">/**
* 多文件文件上传函数
* @param string $pic 表中type='file'的name值
* @param string $path 文件上传成功后存放的路径
* @param int $size 文件上传的最大允许大小,单位为字节;默认为0,不限制
* @param array $types 允许上传文件的类型,默认为图片
* @return array $info 包含上传结果信息的数组
*/
function fileuploads($pic, $path='pic', $size=0, $types=['image/png', 'image/jpeg', 'image/gif', 'image/tmp'], $sum=0, $number=0)
{
//判断上没有上传文件或者文件太大上传失败的处理
if(empty($_POST) && empty($_FILES)){
$info['status'][] = false;
$info['msg'][] = '上传图片太大';
return $info;
}
//处理一下如果是只选择一张图片的时候
if(is_array($_FILES[$pic]['name'])){
$file = $_FILES[$pic];
} else {
foreach ($_FILES[$pic] as $k=>$v) {
$file[$k][] = $v;
}
}
//进行遍历
foreach($file['name'] as $k=>$v) {
$sum ++;
$info['status'][$k] = false;
switch($file['error'][$k]) {
case 1:
$info['msg'][$k] = '第'.($k+1).'个文件太大了';
continue 2;
case 2:
$info['msg'][$k] = '第'.($k+1).'个文件还太大了';
continue 2;
case 3:
$info['msg'][$k] = '第'.($k+1).'个文件只有部分文件被上传';
continue 2;
case 4:
$info['msg'][$k] = '第'.($k+1)."个上传文件不存在";
continue 2;
case 6:
$info['msg'][$k] = '第'.($k+1).'个找不到临时文件';
continue 2;
case 7:
$info['msg'][$k] = '第'.($k+1).'个文件未被服务器写入';
continue 2;
}
//判断文件类型是不是一张图片,不是讲错误信息保存起来
if(!in_array($file['type'][$k],$types)){
$info['msg'][$k] = '第'.($k+1).'个输入的不是一张图片';
continue;
}
//判断上传的文件
if($size > 0 && $file['size'][$k] > $size){
$info['msg'][$k] = '第'.($k+1).'个图片太大了';
continue;
}
//判断路径是否存在,不存在进行递归创建
if(!file_exists($path)) mkdir($path, 0777, true);
// 随机生成文件名并获取文件的后缀
$sj = mt_rand(1111, 9999999).uniqid().'.'.pathinfo($file['name'][$k],PATHINFO_EXTENSION);
//对调用函数的路径进行处理
$path = rtrim($path, '/').'/';
//进行拼接
$filename = $path.$sj;
if (is_uploaded_file($file['tmp_name'][$k])) {
if (move_uploaded_file($file['tmp_name'][$k], $filename)) {
$number++;
$info['name'][$k] = $sj;
} else {
$info['msg'][$k] = "第{$sum}个人品太差,上传失败";
}
} else {
$info['msg'][$K] = '第{$sum}个人品太差,上传失败';
}
}
if ($number == $sum) {
$info['status'] = true;
} else {
$info['status'] = false;
}
return $info;
}
//函数的调用
$res = fileuploads('pic');//就可以直接处理得到的结果了
var_dump($res);
- 大小: 3.3 KB