$file = $_FILES['equipImg']; //得到传输的数据,以数组的形式
//print_r($file);exit;
$name = $file['name']; //得到文件名称,以数组的形式
$upload_path = "../data/app/equip/".date("Y/m/d/"); //上传文件的存放路径
make_dir($upload_path);
foreach ($name as $k=>$names){
$type = strtolower(substr($names,strrpos($names,'.')+1));//得到文件类型,并且都转化成小写
$allow_type = array('jpg','jpeg','gif','png','bmp'); //定义允许上传的类型
//把非法格式的图片去除
if (!in_array($type,$allow_type)){
unset($name[$k]);
}
}
$equipImg = '';
foreach ($name as $k=>$item){
$type = strtolower(substr($item,strrpos($item,'.')+1));//得到文件类型,并且都转化成小写
$uploadname = time().mt_rand(100,999).".".$type;
//$uploadname = time().$name[$k];
if (move_uploaded_file($file['tmp_name'][$k],$upload_path.$uploadname)){
$equipImg .= ','.date("Y/m/d/").$uploadname;
}else{
retrunJson(-1, '设备图上传失败');
}
}
$equipImg = ltrim($equipImg, ",");
最后将$equipImg插入到对应数据库的equipImg字段下(字段中为字符串形式,多个图片路径中间以逗号,来分隔)
在与app调试时候(比如安卓或者ios)发现有问题,接不到多个图片,但是如果我用php的方法去测试,比如<input type="file" name="equipImg[]"><input type="file" name="equipImg[]"><input type="file" name="equipImg[]">
这种形式去测试这个多图上传,是没问题的,都正常但是因为我不了解APP那边怎么做的,是不是和php的equipImg[]这种形式有区别,才导致问题的
(一次性多图提交,最多不超过5张图)
所以请有经验的大佬,能帮忙看下,我这边接app传来的多图是不是有问题,不胜感激
3 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
存在的问题如下:
1.文件存储路径一般是绝对路径 ,不要写相对路径,路径配置成常量。
2.你需要判断$_FILES[] 是否为空,并且图片数量不能大于5。
3.每张图片的大小也没加限制,你这样会把存储服务器撑爆的。
4.你每次都会去make_dir 一下,应该是先判断文件夹是否存在,如果不存在才会创建。
5.另外你上的代码,毫无可读性,健壮性,毫无排版,更别提代码复用了,让我一看就没兴趣往下看了。
- 3 回答
- 0 关注
- 384 浏览
添加回答
举报
0/150
提交
取消