0

我的表单中有 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 方法,所以这也不是问题。有人看到有什么不对吗?请告诉我

4

1 回答 1

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

我想当我在这里发布问题时我会想得更多,哈哈......

于 2013-03-12T21:28:06.830 回答