2017-01-14 46 views
0

我想通过codeigniter控制器上传2个文件。当我选择文件并点击提交时,它总是返回error。但是,当我做var_dump($_FILES);它显示文件正在通过,但没有被codeigniter控制器捕获。文件没有上传在codeigniter

有人能告诉我我做错了什么吗?下面是我的代码

  $config['upload_path']   = './docs/'; 
      $config['allowed_types']  = 'jpg|doc|docx'; 
      $config['max_size']    = 10000; 
      $config['max_width']   = 3000; 
      $config['max_height']   = 3000; 

      $this->load->library('upload', $config); 
if (!$this->upload->do_upload('userfile1') || !$this->upload->do_upload('userfile2')) 
{ 

echo "error"; 

} else { 

$f1= $this->upload->data('userfile1'); 
$f2= $this->upload->data('userfile2'); 

echo $f1['file_name']; 
echo $f2['file_name']; 

} 

回答

1

对于CI多文件上传,请遵循这种方式 -

$config['upload_path'] = 'uploads/photos/'; 
$config['allowed_types'] = 'jpg|jpeg|png|gif'; 
$this->load->library('upload', $config); 
for ($i=0; $i < count($_FILES['photos']['name']); $i++) { 
    $_FILES['photos[]']['name']  = $_FILES['photos']['name'][$i]; 
    $_FILES['photos[]']['type']  = $_FILES['photos']['type'][$i]; 
    $_FILES['photos[]']['tmp_name'] = $_FILES['photos']['tmp_name'][$i]; 
    $_FILES['photos[]']['error'] = $_FILES['photos']['error'][$i]; 
    $_FILES['photos[]']['size']  = $_FILES['photos']['size'][$i]; 
    if ($this->upload->do_upload('photos[]')) { 
     $photos_files = array('upload_data' => $this->upload->data()); 
     $photos_arr[] = $photos_files['upload_data']['file_name']; 
    }else{ 
     $error[] = $this->upload->display_errors(); 
    } 
} 
+0

嗨..感谢您的答复...我有2个独立的输入字段,2种不同类型的文件。那么我怎样才能得到没有使用循环的文件? – Learner

+0

你可以定义两个输入的名称属性值,如同 - name =“photo []” –

+0

使用我的答案将工作 –