2013-11-24 60 views
2
function submit_article() { 
    $this->load->helper(array('form', 'url')); 
    $this->load->library('form_validation'); 
    $this->form_validation->set_error_delimiters('<p style="color:red">', '<br/></p>'); 

    $my_rules = array(
     array(
      'field' => 'title', 
      'label' => 'Title', 
      'rules' => 'required|min_length[5]|max_length[20]|xss_clean' 
     ), 
     array(
      'field' => 'additionalUpload', 
      'label' => 'Additional Upload', 
      'rules' => 'callback_is_image' 
     ) 
    ); 

    $this->form_validation->set_rules($my_rules); 

    if ($this->form_validation->run() == FALSE) { 
     //ERROR 
     $data['title'] = ucfirst('submit Article'); 
     $this->load->view('templates/header', $data); 
     $this->load->view('submit_article', $data); 
     $this->load->view('templates/footer', $data); 
    } else { 
     //SUCCESS 
     $data['title'] = ucfirst('article Submitted'); 
     $this->load->view('templates/header', $data); 
     $this->load->view('forms_view/submit_article_success', $data); 
     $this->load->view('templates/footer', $data); 
    } 
} 

function is_image($value) { 

    $config['upload_path'] = './public/uploads/'; 
    $config['allowed_types'] = 'gif|jpg|png|pdf|tiff'; 
    $config['max_size'] = '2048'; 
    $config['max_width'] = '0'; 
    $config['max_height'] = '0'; 
    $config['remove_spaces'] = true; 

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

    if (!$this->upload->do_upload()) { 
     $this->form_validation->set_message('is_image', $this->upload->display_errors('<p style="color:red">', '<br/></p>')); 
     return FALSE; 
    } else { 
     $this->upload->data(); 
     return TRUE; 
    } 
} 

喜每個人,這是一種用於處理笨多形式的數據我控制器功能的代碼,實際上是場additionalUpload不是一個必需費爾德,但我想它要驗證用戶是否上傳文件位於文件類型的additionalUpload字段中,當我運行上面的代碼並單擊提交按鈕時沒有選擇任何文件它顯示我錯誤「您沒有選擇要上載的文件。」這是我不想要的,因爲這不是必填字段,這是我的第一個問題。笨文件上傳不工作

第二個問題是,當我選擇一個文件並單擊提交按鈕時,它再次顯示「您沒有選擇文件上傳。「。

注意:我剛剛在這裏顯示了我的表單的兩個字段,即標題additionalUpload,但我總共有9個字段。

感謝提前請幫助任何人。

+0

'$這個 - > upload-> do_upload ('your_field_name')' –

+0

感謝它爲我工作....這解決了我的第二個問題..但我的第一個問題仍然沒有解決..請幫助我@dianuj先生 –

回答

3

您必須首先放置文件字段的名稱。

<input type="file" name="image"/> 
$this->upload->do_upload('image'); 

其次,你不能有MAX_WIDTH和最大高度爲0

$config['max_width'] = '2048'; 
$config['max_height'] = '2048'; 

首先嚐試一下,然後看看

爲了驗證領域的文件:

if($_FILES['you_field_name']['tmp_name']){ 

     //your code 
} 

問候

+0

謝謝你的重要時間..但我們可以有widht和高度爲0無限..現在我的問題是,這個字段不需要這是一個附加字段名稱建議..所以它不應該顯示任何錯誤信息,當用戶沒有選擇任何文件..但在我的情況下,它顯示的錯誤,我不想這個..任何建議從你身邊? –

+0

非常感謝@webyseo Sir –

1

試試這一個檢查,如果$_FILES不爲空,那麼請別人驗證無能爲力

$my_rules = array(
     array(
      'field' => 'title', 
      'label' => 'Title', 
      'rules' => 'required|min_length[5]|max_length[20]|xss_clean' 
     ) 
    ); 

if(!empty($_FILES)){ 

    $my_rules[]= array(
      'field' => 'additionalUpload', 
      'label' => 'Additional Upload', 
      'rules' => 'callback_is_image' 
     ) 
} 

$this->form_validation->set_rules($my_rules); 

在你上傳功能,你需要指定字段名

$this->upload->do_upload('your_field_name') 
+0

謝謝@dianuj Sir –