TP3.2不能上传多张图片?看这篇文章完美解决!

2017-08-25 2454 5 编辑:SW 来源:技术博客

不废话,首先我们来看看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);//上传成功就输出返回的结果

                }

    }

然后呢,我就上传三张图片,如下图↓↓↓

QQ截图20170825201247.jpg

点击“提交”按钮,结果如下↓↓↓

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

好的,我写成上述那样,点击“提交”按钮,结果如下↓↓↓

547947ba4cda1.jpg

看来只有uploadOne()方法里面才可以写东西啊。。。

为了这个问题,小编已经尝试了很多的方法,依旧得不到解决。但是小编在最后头脑一热,发现了另一种解决的方法,并且完美解决在项目中。

写一个循环,直接生成一个不同变量名上传图片类upload,再用循环来上传单图,也就是$upload->uploadone()函数,注意接下来的设置是关键,把文件生成的格式,一般我都是使用tp默认的时间命名方法,在循环的时候改变这一个命名的规则,之后测试,不管我上传多少图片都可以完美存在,不会存在只有单图也就是给覆盖的情况~

本站文章均为深正网站建设摘自权威资料,书籍,或网络原创文章,如有版权纠纷或者违规问题,请即刻联系我们删除,我们欢迎您分享,引用和转载,但谢绝直接搬砖和抄袭!感谢...
关注深正互联
我们猜你喜欢
多一份免费策划方案,总有益处。

请直接添加技术总监微信联系咨询

2
5