php==表单传输文件时,单个域接收多个文件

1.form表单中的表单域增加multiple属性,可实现单个域上传多个文件
2.想要以数组的方式传入多个文件的信息,需要将name属性设置为:例:name=“poster[]”
3.验证并将多个文件以数组的方式存到磁盘
4.在数据接收方,要循环遍历接收

//单文件域上传多个文件
$pos_type = $_FILES[‘poster’][‘type’];
$pos_err = $_FILES[‘poster’][‘error’];
$pos_name = $_FILES[‘poster’][‘name’];
$pos_size = $_FILES[‘poster’][‘size’];
//以上返回的都是对应文件信息的数组

$arr = array();//用来存放路径,为了解决Notice:Array to string conversion问题
//思路:找出问题,我是直接用字符串与数组进行了连接
//解决:1)创建一个空数组(我这里是$arr),用来存放上传的每个图片的路径
			2)在遍历文件数组时,将字符串("http://www.study4.com:81/unlode/")
			加入到一个新的数组(我这里是$path)
			3)再遍历文件名字的数组时,将各个文件名追加到$path中
			4)再用implode("", $path);方法将数组庄边称字符串
			5)将装变好的字符串在一次加入到$arr中,这样$arr存放的就是一个一维数组


$len = count($pos_name);
//用于验证上传的图片的类型的数组
$pos_arr = array("image/jpg","image/jpeg","image/gif","image/png");

for($i=0;$i<$len;$i++){ 
	$path = array("http://www.study4.com:81/unlode/");
	if(!(in_array($pos_type[$i], $pos_arr))){
		$GLOBALS['error_mes'] = "图片上传类型错误";
		continue;
	}
	if($pos_size[$i]<1*1024 || $pos_size[$i]>40*1024*1024){
		$GLOBALS['error_mes'] = "图片文件大小不合理";
		continue;
	}
	if($pos_err[$i] > 0){
		$GLOBALS['error_mes'] = $pos_err[$i];
	}else{
		if (file_exists("D:/www/www5/unlode/" . $_FILES["poster"]["name"][$i]))
    		{
    			$path[] = $_FILES["poster"]["name"][$i];
    			$path = implode("", $path);
    			$arr[] = $path;
      		  	echo $_FILES["poster"]["name"][$i] . " 文件已经存在。 ";
    		}
    	else
    		{
        	// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
        	move_uploaded_file($_FILES["poster"]["tmp_name"][$i], "D:/www/www5/unlode/" . $_FILES["poster"]["name"][$i]);
        	echo "文件存储在: " . "D:/www/www5/unlode/" . $_FILES["poster"]["name"][$i];
    		}	
	}
}

你可能感兴趣的:(php==表单传输文件时,单个域接收多个文件)