CodeIgniter - File upload required validation CodeIgniter - File upload required validation codeigniter codeigniter

CodeIgniter - File upload required validation


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');}


CodeIgniter file upload optionally ...works perfectly..... :)

---------- controller ---------

function file(){ $this->load->view('includes/template', $data);}function valid_file(){ $this->form_validation->set_rules('userfile', 'File', 'trim|xss_clean'); if ($this->form_validation->run()==FALSE)  {    $this->file(); } else {  $config['upload_path']   = './documents/';  $config['allowed_types'] = 'gif|jpg|png|docx|doc|txt|rtf';  $config['max_size']      = '1000';  $config['max_width']     = '1024';  $config['max_height']    = '768';  $this->load->library('upload', $config);  if ( !$this->upload->do_upload('userfile',FALSE))  {    $this->form_validation->set_message('checkdoc', $data['error'] = $this->upload->display_errors());    if($_FILES['userfile']['error'] != 4)    {        return false;    }  }  else  {    return true;  }}

i just use this lines which makes it optionally,

if($_FILES['userfile']['error'] != 4){ return false;}$_FILES['userfile']['error'] != 4 is for file required to upload.

you can make it unnecessary by using $_FILES['userfile']['error'] != 4, then it will pass this error for file required and works great with other types of errors if any by using return false ,hope it works for u ....


check this form validation extension library can help you to validate files, with current form validation when you validate upload field it treat as input filed where value is empty have look on this really good extension for form validation library

MY_Formvalidation