使用$ _FILES只读取第一个文件上传多个文件 - CodeIgniter上传类

时间:2013-03-12 20:05:56

标签: codeigniter file-upload

我的表单中有3个输入文件字段,每次提交表单时,它只提交第一个文件,其他文件不在images文件夹中。

这就是我在我的控制器中执行此操作的方法:

public function book()
{
    $id = $this->manage_model->book();
    $images = array("1","2","3");
    $this->load->library('upload');

    foreach($images as $i){

        if(!empty($_FILES['files'.$i]['name']))
        {
            $config['file_name'] = $id . '_' . $i;
            $config['upload_path'] = './photos/';
            $config['allowed_types'] = 'jpg|png';

            $this->upload->initialize($config);
            $name = "files" . $i;
            if ( ! $this->upload->do_upload($name))
            {
                                    //set flashdata
                redirect('manage/add_page');
            }
            else
            {
                redirect('manage/add_page');
            }
        }

    }

}

,这些是文件输入字段的名称:

                            <input type="file" name="files1" />
            <input type="file" name="files2" />
            <input type="file" name="files3" />

我在我的表单中使用multipart和post方法,所以这也不是问题。有人看错了什么吗?请让我知道

1 个答案:

答案 0 :(得分:0)

重定向不允许foreach循环经历多次,因为它在第一次循环回到add_page后被重定向。

foreach循环应该如下所示:

foreach($images as $i){

        if(!empty($_FILES['files'.$i]['name']))
        {
            $config['file_name'] = $id . '_' . $i;
            $config['upload_path'] = './photos/';
            $config['allowed_types'] = 'jpg|png';

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

            $name = "files" . $i;
            if ( ! $this->upload->do_upload($name))
            {
                redirect('manage/add_page');
            }

        }

    }

    redirect('manage/add_page');

我想当我在这里发布一个问题时我想的更多大声笑......