PHP中多文件上传函数

/**
 * 多文件文件上传函数
 * @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);

猜你喜欢

转载自1060049850.iteye.com/blog/2357112
今日推荐