Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CodeIgniter - File upload required validation

I have 2 text fields and 1 file upload that are all required. Everything works when I require just the text fields, but when I require the file upload the validation error stays saying that a file is required, even though I selected one. Anyone know what I am doing wrong? Many thanks in advance.

//view

<?php echo form_open_multipart('add'); ?>  <fieldset>     <input type="text" name="name" /><br>     <input type="text" name="code" /><br>     <input type="file" name="userfile" /><br><br>     <input type="submit"value="Add" /> </fieldset>  <?php echo form_close(); ?> 

//controller

public function add() {      $this->form_validation->set_rules('name', 'Name', 'required');     $this->form_validation->set_rules('code', 'Code', 'required');     //$this->form_validation->set_rules('userfile', 'Document', 'required');     //when the above line is active the upload does not go through      if ($this->form_validation->run() == FALSE) {          $data['page_view'] = $this->page_view;         $data['page_title'] = $this->page_title;         $this->load->view('template', $data);     }     else     {         $this->load->library('upload');          if (!empty($_FILES['userfile']['name']))         {             $config['upload_path'] = './uploads/';             $config['allowed_types'] = 'gif|jpg|png|jpeg';                   $this->upload->initialize($config);              if ($this->upload->do_upload('userfile'))             {                 $img = $this->upload->data();                 $file_name = $img['file_name'];                  $name = $this->input->post('name');                 $code = $this->input->post('code');                  $this->load->model('create', 'create_model');                 $this->create_model->create_entry($name, $code, $file_name);                  $data['page_view'] = $this->page_view;                 $data['page_title'] = $this->page_title;                 $this->load->view('template', $data);             }             else             {                 echo $this->upload->display_errors();              }         }     } } 
like image 765
Staysee Avatar asked Sep 05 '12 20:09

Staysee


People also ask

How to validate file upload in CodeIgniter?

The following built-in CodeIgniter library and helper are used to upload files with validation in CodeIgniter. form_validation – helps to validate form fields. file – provides get_mime_by_extension() function to get the mime type of uploaded file. upload – helps to upload the file to the server.

How to validate data in CodeIgniter?

CodeIgniter lets you set as many validation rules as you need for a given field, cascading them in order, and it even lets you prep and pre-process the field data at the same time. To set validation rules you will use the set_rules() method: $this->form_validation->set_rules();

How to give form validation in CodeIgniter?

Add the following line in application/config/routes.$route['validation'] = 'Form'; Let us execute this example by visiting the following URL in the browser. This URL may be different based on your site. We have added a validation in the controller − Name is required field before submitting the form.


1 Answers

I found a solution that works exactly how I want.

I changed

$this->form_validation->set_rules('name', 'Name', 'trim|required'); $this->form_validation->set_rules('code', 'Code', 'trim|required'); $this->form_validation->set_rules('userfile', 'Document', 'required'); 

To

$this->form_validation->set_rules('name', 'Name', 'trim|required'); $this->form_validation->set_rules('code', 'Code', 'trim|required'); if (empty($_FILES['userfile']['name'])) {     $this->form_validation->set_rules('userfile', 'Document', 'required'); } 
like image 160
Staysee Avatar answered Oct 13 '22 07:10

Staysee