2014-05-23 53 views
0

我正在使用Codeigniter上传文件。当我符合文件要求时,它工作正常。问题是,如果有错误,我想显示这些错误,但是当出现错误时,我的页面只会刷新。这里是我的代码(我只得到了来自网络的代码并修改它):如何捕获Codeigniter多个文件上传错误?

foreach($_FILES['userfile'] as $key=>$val) 
{ 
    $i = 1; 
    foreach($val as $v) 
    { 
    $field_name = "file_".$i; 
    $_FILES[$field_name][$key] = $v; 
    $i++; 
    } 
} 
$err = 0; 
$i=0; 
// Unset the useless one ;) 
unset($_FILES['userfile']); 
$config['file_name'] = time(); 
$config['upload_path'] = './uploads/events'; 
$config['allowed_types'] = 'pdf'; 
$config['max_size'] = '200000'; 
$this->load->library('upload',$config); 
foreach($_FILES as $field_name => $file) 
{ 
    if ($this->upload->do_upload($field_name)) 
    { 
    $upload_data = $this->upload->data(); //UPLOAD FILES TO FOLDER 
    $this->Upload_items->files($upload_data['file_name']); //WRITE TO DATABASE; 
    }else{ 
    echo $this->upload->display_errors(); 
    } 
    $i++; 
    if(($i==$ctr)&&($err==0)){ 
    $this->Upload_items->event(); //WRITE TO MULTIMEDIA TABLE 
    } 
} 

功能写入数据库还没有完成,顺便说一句。

编辑:allowed_types的错误显示,但超过文件大小的错误不是。

回答

0
$config ['upload_path'] = 'upload/Main_category_product/'; 
    $path = $config ['upload_path']; 
    $config ['allowed_types'] = 'gif|jpg|jpeg|png'; 
    $config ['max_size'] = '1024'; 
    $config ['max_width'] = '1920'; 
    $config ['max_height'] = '1280'; 
    $this->load->library ('upload', $config); 

    foreach ($_FILES as $key => $value) { 

     if (! empty ($value ['tmp_name']) && $value ['size'] > 0) { 

      if (! $this->upload->do_upload ($key)) { 

       $errors = $this->upload->display_errors(); 
       flashMsg ($errors); 
      } else { 
       // Code After Files Upload Success GOES HERE 
      } 
     } 
    } 

使用FlashMSG函数将消息正确地发送给用户。或者收集数组中的所有消息并最终显示。