PHP中多文件上传函数_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP中多文件上传函数

PHP中多文件上传函数

 2017/2/15 5:32:12  罗正波  程序员俱乐部  我要评论(0)
  • 摘要:/***多文件文件上传函数*@paramstring$pic表中type='file'的name值*@paramstring$path文件上传成功后存放的路径*@paramint$size文件上传的最大允许大小,单位为字节;默认为0,不限制*@paramarray$types允许上传文件的类型,默认为图片*@returnarray$info包含上传结果信息的数组*/functionfileuploads($pic,$path='pic',$size=0,$types=['image/png'
  • 标签:PHP 上传 函数 文件
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
  • 查看图片附件
上一篇: 乐视致新以300亿估值引入信利电子7.2亿元投资 下一篇: 没有下一篇了!
发表评论
用户名: 匿名