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];
}
}
}