/** * 多文件文件上传函数 * @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);
PHP中多文件上传函数
猜你喜欢
转载自1060049850.iteye.com/blog/2357112
今日推荐
周排行