入住 CI 中国社区 登录
CodeIgniter 中国开发者社区 返回首页

得意的个人空间 https://codeigniter.org.cn/forums/?50691 [收藏] [复制] [分享] [RSS]

日志

CI 批量上传文件示例

已有 1378 次阅读2017-2-17 19:45 |个人分类:随手| 上传文件

CI 框架没有直接提供批量上传的接口,但是我们稍微修改一下上传接口
$this->load->library('upload', $config);
$this->upload->do_upload('upload_file');

,也能实现批量上传文件。其它框架的批量上传文件原理也大概如此。

首页,下面是html 代码 文件是一个数组 ,form 标签 添加 enctype="multipart/form-data"
<html>
<head>
<title></title>
</head>
<body>
<form action="/upload" enctype="multipart/form-data" method="post">
标题<input type="text" name="title"/> </br>
描述<input type="text" name="description"/> </br>
<input type="file" name="image[]" multiple="multiple" /></br>
<input type="submit" value="提交">
</form>
</body>
</html>
在upload 方法应该这么处理
public function upload(){
    
//     var_dump(json_encode($_FILES)); 
        $config['upload_path']      = './uploads/';
        $config['allowed_types']    = 'gif|jpg|png';
        $config['max_size']     = 1024*2;
        $config['max_width']        = 0;
        $config['max_height']       = 0;
        $config['overwrite']       = TRUE ;
        //创建下载目录
        if(!file_exists($config['upload_path'])){
            mkdir($config['upload_path'], 0777, true);
        }
        
        $this->load->library('upload', $config);
        
        $fileArr = $_FILES['image'];
        if(count($_FILES['image']['name']) == 0){
           echo '请上传图片'; exit; 
        }
        $file = array();
        foreach ($fileArr['name'] as $key => $value) {
            $file['name'] = $value;
            $file['type'] = $fileArr['type'][$key];
            $file['tmp_name'] = $fileArr['tmp_name'][$key];
            $file['error'] = $fileArr['error'][$key];
            $file['size'] = $fileArr['size'][$key];
            $_FILES = array('image'=>$file);
            
            if ( ! $this->upload->do_upload('image')){
                $error = $this->upload->display_errors();
                var_dump($error); exit;
            } 
         
        }
       echo '上传成功';
        
    }

当批量上传文件时, $_FILES 的格式是:

也是说, name, type ,都是数组,而CI框架的 $this->upload->do_upload('image') 只支持 字符。

所以我们要转换一下 $_FILES 转换成

。然后foreach 循环上传就OK了。如果有不懂,可以一起交流




路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 入住 CI 中国社区