用户
 找回密码
 入住 CI 中国社区
搜索
查看: 12192|回复: 16
收起左侧

[其它 Other] CI 同时上传多个图片

[复制链接]
发表于 2013-4-7 15:16:12 | 显示全部楼层 |阅读模式
最近,一直在研究ci框架,由于项目的需求,在后台需要做一个功能同时上传两张图片。测试了好久都没有两张图片都没有上传成功,(上传的结果是只能上传第二张图片,但是图片名称是第一个图片的)。
在这里说一下自己的思路,首先肯定是上传两张图片,然后提交到php页面,然后打印$_FILES你会看到一个二维数组,我这里是通过foreach循环来操作:
                               $this->load->library('upload');//重点
                                foreach($_FILES as $key=>$val)
                                {
                               
                                $filename = $_FILES[$key]['name'];
                                $tmp = explode('.', $filename);
                                $ext = $tmp[count($tmp) - 1];//获取文件后缀
                                /*组合$config*/
                                $this->upload->initialize($config);// 重点
                                $this->upload->do_upload($key);
                                //$info[$key] = $config['file_name'];
                               
                                       
                   }

上边的代码比较简单,在我标明重点的两端代码,大家一定要注意。原来我的代码是在foreach中添加  $this->load->library('upload',$config);这样测试了好多次都不行,最后改用 $this->load->library('upload');//重点 $this->upload->initialize($config);// 重点。问题就解决了。
发表于 2016-5-6 16:11:43 | 显示全部楼层
这里是control中的代码  
//处理文件上传数据
        public function  do_upload(){
            //重新组合一个$_FILES中的格式 使其变为和上传单个文件的数据格式类似
            foreach($_FILES['myfile'] as $index => $vals){
                foreach ($vals as $i => $val) {
                    $file_map[$i]['myfile'][$index] = $val;
                }
            }
            foreach ($file_map as $files) {
                $config['upload_path'] = './uploads/admin/test';
                $config['file_name'] = uniqid();
                $config['allowed_types'] = 'gif|jpg';
               
                //遍历   这样每次都去覆盖掉$_FILES中的数据 (PS:这样覆盖后,$_FILES格式就和上传单个文件的格式是一模一样的了)
                $_FILES = $files;

                $this->load->library('upload',$config);
                $this->upload->do_upload("myfile");
                echo $this->upload->display_errors();
                var_dump($this->upload->data());
            }
        }

发表于 2016-11-1 09:16:49 | 显示全部楼层
foreach($_FILES as $key=>$val)
                {
                              $filename = $val['name'];
                }
                echo "<pre>";
                var_dump($filename);
                echo "</pre>";
                die;
打印结果string(7) "789.jpg",上传两张只有一个图片的名字,是我哪里写错了吗,
发表于 2013-8-3 13:05:16 | 显示全部楼层
谢谢分享
发表于 2013-10-26 10:38:01 | 显示全部楼层
mark!
发表于 2014-4-28 13:17:41 | 显示全部楼层
{:soso_e179:}
发表于 2015-3-18 01:51:58 | 显示全部楼层
本帖最后由 the7th 于 2015-3-18 11:42 编辑

好像是我写错了 不过还是没结果

本版积分规则