thinkPHP3.2.3文件上传类多张图片上传怎么只有第一张图片被上传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkPHP3.2.3文件上传类多张图片上传怎么只有第一张图片被上传相关的知识,希望对你有一定的参考价值。
首先我们来看看html的前端表单代码↓↓↓:<form action=":U('admin/content/content')" name="myform" id="myform" method="post" enctype="multipart/form-data"><input type="file" name="banner_index[]" size="80" class="inpMain"/><input type="file" name="banner_index[]" size="80" class="inpMain"/><input type="file" name="banner_index[]" size="80" class="inpMain"/></form>然后我们来看看后台这个upload函数↓↓: $upload = new \Think\Upload(); // 实例化上传类 $upload->maxSize = 2000000 ; // 设置附件上传大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型 $upload->rootPath = './Uploads/'; // 设置附件上传根目录 $upload->savePath = date('Y').'/'.date('m').'/'.date('d').'/'; // 设置附件上传(子)目录 $upload->subName = array('date', 'H'); //子目录创建方式,[0]-函数名,[1]-参数,多个参数使用数组 $upload->saveName = md5(uniqid()); //上传文件的保存规则 // 上传文件 $info = $upload->upload(array($_FILES['banner_index'])); if(!$info) // 上传错误提示错误信息 $this->error($upload->getError(),U("Admin/content/content"),3); else // 上传成功 获取上传文件信息 foreach($info as $file) echo $file['savepath'].$file['savename']; echo "<pre>"; var_dump($info); var_dump($_POST); var_dump($_FILES); die;然后呢,我就上传三张图片点击“提交”按钮,结果如下↓↓↓:$info数组:array (size=1) 0 => array (size=9) 'key' => int 0 'name' => string '3.jpg' (length=5) 'type' => string 'image/jpeg' (length=10) 'size' => int 135985 'ext' => string 'jpg' (length=3) 'md5' => string '11bbeafcbed015be04c9ab3c7b9281f9' (length=32) 'sha1' => string '88f2a795d105f5ad8f8ddc9ffada22ecbcd44056' (length=40) 'savename' => string 'b74dee38cd479fd63323918a5f5c33ed.jpg' (length=36) 'savepath' => string '2016/12/06/11/' (length=14)图片为$_FILES数组!很神奇啊,我明明上传了三张图,但是这里返回的,只是成功上传了一张图而已,也就是被选择的第一张图。求大神赐教,怎么解决啊,十分感谢
可以遍历传过来的FILES数组,然后用循环调用UPLOAD类public function upload()
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 2000000 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类
$upload->rootPath = ''./Uploads/';
$upload->savePath = date('Y').'/'.date('m').'/'.date('d').'/';
$upload->subName = array('date', 'H');
$upload->saveName = md5(uniqid());
$info = $upload->upload();
if(!$info) // 上传错误提示
$this->error($upload->getError());
else // 上传成功
return $info;
//$this->success('上传成功!');
//调用
foreach($_FILES["banner_index"]["size"] as $key=>$val)
if($val>0)
$info=$this->upload(); //判断上传文件大小大于0,调用upload
foreach($info as $v)
echo $v["savepath"].$v["savename"];
参考技术A 把banner_index去掉在$_FIFLES里面
thinkphp 文件上传
/**
* 图片文件上传
* savepath上传子目录
* @return arrray
*/
function file_upload($savepath = ‘‘,$key = ‘images‘,$thumb = false){
/*上传缩略图*/
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array(‘jpg‘, ‘gif‘, ‘png‘, ‘jpeg‘);// 设置附件上传类型
$upload->rootPath = ‘./Uploads/‘; // 设置附件上传根目录
$upload->savePath = $savepath.‘/‘; // 设置附件上传(子)目录
$info = $upload->upload(); // 上传文件
//生成缩略图
if($thumb){
$image = new \Think\Image();
$image->open(‘./Uploads/‘.$info[$key][‘savepath‘].$info[$key][‘savename‘]);
$info[‘thumb‘] = $info[$key][‘savepath‘].‘/thumb_‘.time().‘.jpg‘;
// 生成一个居中裁剪为280*220的缩略图并保存
$image->thumb(280, 220,\Think\Image::IMAGE_THUMB_CENTER)->save(‘./Uploads/‘.$info[‘thumb‘]);
}
return $info;
}
以上是关于thinkPHP3.2.3文件上传类多张图片上传怎么只有第一张图片被上传的主要内容,如果未能解决你的问题,请参考以下文章
Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传
LayUI上传图片(文件)的时候,上传多张图片(文件)会调用多次接口,而我们想要让上传多个文件的时候只调用一次接口,怎么解决?
LayUI上传图片(文件)的时候,上传多张图片(文件)会调用多次接口,而我们想要让上传多个文件的时候只调用一次接口,怎么解决?
在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程