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

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

<?php foreach ($value['poster'] as $img): ?> <?php endforeach ?>

//单文件域上传多个文件
$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];
    		}	
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值