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

问题描述:

我试图上传一个使用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仅仅是一个笨形式

<?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函数,但似乎没有任何工作,我即将把我的头发拉出来。任何帮助表示赞赏!

上传文件时,您需要使用form_open_multipart()而不是form_open()

+0

即使我没有上传多个文件?这实际上并没有工作......它仍然给我同样的错误信息 – zazvorniki 2014-10-05 23:54:17

+0

@zazvorniki Yup。多部分与文件数量无关,并且根本无需上传任何文件。从文档(https://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html):'默认情况下,上传例程期望文件来自称为userfile的表单字段,并且表单必须是“ multipart type' – 2014-10-06 00:08:05

+0

奇怪的是,它仍然无法正常工作,您是否在$ _FILES中看到它? – 2014-10-06 00:09:51

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

添加后,如果你print_r($ _文件),那么你会得到数组。

当我们做与图片上传或验证相关的工作时有必要