Codeigniter'您没有选择要上传的文件。'

时间:2014-10-05 19:13:36

标签: php codeigniter

我正在尝试使用codeigniter上传文件,无论我尝试了什么,我都会收到错误消息,说明我实际上没有选择文件。

我的控制器看起来像这样

public function editHeader()
{
    $this->require_auth();      

    $config['upload_path'] = './files/';
            $config['allowed_types'] = 'gif|jpg|png';
            $config['max_size'] = '1000KB';
            $config['max_width']  = '1024';
            $config['max_height']  = '768';

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

            if ( ! $this->upload->do_upload('userfile'))
            {
                $error = array('error' => $this->upload->display_errors());

                var_dump($error);
            }
            else
            {
                $data = array('upload_data' => $this->upload->data());
                echo('yeah!');
            }               
} 

我的html只是一个codeigniter表单

<?foreach($header as $row) :?>
      <?=form_open_multipart('admin/editHeader');?>
         <input class="waitForLoad fadeInDown" type="file" name="userfile"  />
        <input type="submit" name="submit" value="Change" class="btn btn-success pull-right" />
      </form>
<?endforeach;?>

我尝试了普通的解决方案,例如提升max_size以及将上传名称放在do_upload函数中,但似乎没有任何效果,我即将解决问题。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

上传文件时,您需要使用form_open_multipart()代替form_open()

答案 1 :(得分:0)

你必须使用 <?php echo form_open_multipart(path); ?>因为如果我们在表单中写入,我们会在控制器中获得$ _FILES。

添加后,如果你打印__($ _ FILES),那么你将得到数组。

当我们完成与图片上传或验证码相关的工作时,这是必要的