不废话,首先我们来看看html的前端表单代码↓↓↓
<form action="__URL__/uploadfile" enctype="multipart/form-data" method="post">
<input type="file" name="docs[]"><br/>
<input type="file" name="docs[]"><br/>
<input type="file" name="docs[]"><br/>
<input type="submit" value="提交" >
</form>
很简单,就是一次上传三个文件的表单。
然后我们来看看后台这个uploadfile函数↓↓↓
public function uploadfile(){
// //下面是配置上传类
$config = array(
'maxSize' => 3145728,
'rootPath' => './Upload/',//文件上传保存的根路径
'savePath' => '',//文件上传的保存路径(相对于根路径)
'exts' => array('jpg', 'gif', 'png', 'jpeg'),//允许上传的文件后缀(留空为不限制),使用数组或者逗号分隔的字符串设置
// 'mimes' => array(),//允许上传的文件类型(留空为不限制),使用数组或者逗号分隔的字符串设置
'saveName' => array('date','YmdHis'),
// 'saveExt' => 'jpg',//上传文件的保存后缀,不设置的话使用原文件后缀
// 'replace' => false,//存在同名文件是否是覆盖,默认为false
'autoSub' => false,//自动使用子目录保存上传文件 默认为true
// 'subName' => array('date','YmdHis'),//子目录创建方式,采用数组或者字符串方式定义
);
$upload = new \Think\Upload($config);// 实例化上传类
$info = $upload->upload();
if(!$info){
$this->error($upload->getError());
}else{
var_dump($info);//上传成功就输出返回的结果
}
}
然后呢,我就上传三张图片,如下图↓↓↓
点击“提交”按钮,结果如下↓↓↓
array (size=1)
0 =>
array (size=9)
'key' => string 'docs' (length=4)
'name' => string '车轮不息.jpg' (length=16)
'type' => string 'image/jpeg' (length=10)
'size' => int 28000
'ext' => string 'jpg' (length=3)
'md5' => string '60894b4678f46da0d80c9b76aa6e843c' (length=32)
'sha1' => string '56b5d5f88c8fa8a9ac34808a9533ca52b79e6f68' (length=40)
'savename' => string '20141129121756.jpg' (length=18)
'savepath' => string '' (length=0)
很神奇啊,我明明上传了三张图,但是这里返回的,只是成功上传了一张图而已,也就是被选择的第一张图。
你可能会说,肯定是uploadfile函数里面
$info = $upload->upload();
没有写成↓↓↓
$info = $upload->upload($_FILES['docs]);
好的,我写成上述那样,点击“提交”按钮,结果如下↓↓↓
看来只有uploadOne()方法里面才可以写东西啊。。。
为了这个问题,小编已经尝试了很多的方法,依旧得不到解决。但是小编在最后头脑一热,发现了另一种解决的方法,并且完美解决在项目中。
写一个循环,直接生成一个不同变量名上传图片类upload,再用循环来上传单图,也就是$upload->uploadone()函数,注意接下来的设置是关键,把文件生成的格式,一般我都是使用tp默认的时间命名方法,在循环的时候改变这一个命名的规则,之后测试,不管我上传多少图片都可以完美存在,不会存在只有单图也就是给覆盖的情况~
深圳 · 龙岗 · 大运软件小镇22栋201
电话:400 182 8580
邮箱:szhulian@qq.com