Codeigniter & HTML5 - Trying to Upload Multiple Images at Once

↘锁芯ラ 提交于 2019-11-28 08:50:18

I ran into this problem aswell. The $_FILES data is sent a diffent structure (due to the multiple="" attribute) so codeigniter can't handle it. Prepend this before the uploading process:

$arr_files  =   @$_FILES['userfile'];

$_FILES     =   array();
foreach(array_keys($arr_files['name']) as $h)
$_FILES["file_{$h}"]    =   array(  'name'      =>  $arr_files['name'][$h],
                                    'type'      =>  $arr_files['type'][$h],
                                    'tmp_name'  =>  $arr_files['tmp_name'][$h],
                                    'error'     =>  $arr_files['error'][$h],
                                    'size'      =>  $arr_files['size'][$h]);

Then in the loop function use this:

$this->load->library('upload');

$arr_config =   array(  'allowed_types' =>  'gif|jpg|png',
                            'upload_path'   =>  'url_path/');

foreach(array_keys($_FILES) as $h) {

    // Initiate config on upload library etc.

    $this->upload->initialize($arr_config);

    if ($this->upload->do_upload($h)) {

        $arr_file_data  =   $this->upload->data();

    }

}

Explanation:
I simply change the structure of $_FILES to the common structure which is sent on a default <input type="file" /> and the run a loop, fetching all their key names.

The loop you need:

for($i=0; $i<count($_FILES['name']); $i++){
    if ($_FILES['error'][$i] == 0) {
        //do your stuff here, each image is at $_FILES['tmp_name'][$i]
    }
}

Note that is doesn't use the CI upload class, but plain PHP, which I usually find easier to work with instead of the CI's class.

Check out this class for multiple file upload https://github.com/stvnthomas/CodeIgniter-Multi-Upload

This did the trick for me.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!