我们的论坛中发表帖子中可以附带多张图片,如何处理手机端批量上传图片文件呢?解决方案如下:
这里是一个比较系统完善的方法:
public function uploadfileAction()
{
$size=0;//
记录超过指定大小的文件个数
$filetype=0;//
记录不符合文件类型的个数
$uploadfailed=0;//
上传失败个数
$up_info=$_FILES['
piclst'];//
获取图片文件信息手机端传过来的参数名
$typelist=array("image/gif","image/jpeg","image/pjpeg","image/png");//
定义可以上传的文件类型
for($i=0;$i<count($up_info['name']);$i++)
{
//
判断上传的文件类型是否合法
if(!in_array($up_info['type'][$i],$typelist))
{
$filetype++;
continue;
}
//
判断上传的文件大小是否符合标准
$siezs=$up_info['size'][$i]/1024/1024;
if($siezs>=2)//
超过2M就跳出该循环
{
$size++;
continue;
}
$exten_name=pathinfo($up_info['name'][$i],PATHINFO_EXTENSION);//获取文件扩展名
if(empty($exten_name))
{
$exten_name=".png";//
如果是空的就赋值扩展名为png,因为ios那边传过来的不是file文件类型,是date流没有扩展名
}
//
判断是否是上传的文件,并执行上传
if(is_uploaded_file($up_info['tmp_name'][$i]))
{
//生成图片guid
$charid = strtoupper(md5(uniqid(mt_rand(), true)));
$hyphen = chr(45);// "-"
$uuid = substr($charid, 0, 8).$hyphen
.substr($charid, 8, 4).$hyphen
.substr($charid,12, 4).$hyphen
.substr($charid,16, 4).$hyphen
.substr($charid,20,12);
$pisname=$uuid.".".$exten_name;//
图片文件名以guid命名
$path="/uploadfiles/bbs/".date('Ymd')."/".$pisname;//文件存放路径
if (!file_exists(dirname($_SERVER['DOCUMENT_ROOT'].$path)))//如果目录不存在就新建
{
mkdir(dirname($_SERVER['DOCUMENT_ROOT'].$path), 0777);
}
if(move_uploaded_file($up_info['tmp_name'][$i],$_SERVER['DOCUMENT_ROOT'].$path))//
将文件移动到指定目录下
{
$return=array(
"status"=>0,
"msg"=>"success",
"failednum"=>$uploadfailed
);
//
将信息保存到图片表中
$sql="INSERT INTO medipostpic (PicName,PicUrl,PostingID)VALUES('".$pisname."','
http://meditool.cn".$path."',".$postid.")";
$db->query($sql);
}
else
{
$uploadfailed++;
continue;
}
}
else
{
$return=array(
"status"=>3,
"msg"=>"no data"
);
}
}
}