CodeIgniter File Upload Validation

CodeIgniter provides a form validation class that helps to validate form fields by writing the minimal code. Generally, we are used required rule in CodeIgniter to validate a required form field. But required rule does not work when you tried to validate a file upload field in CodeIgniter. In this CodeIgniter tutorial, we will show you how to add validation to file upload in CodeIgniter.

For better understanding, we’ll demonstrate the complete file upload process with file upload validation. Using our example code you can implement file or image upload functionality with file input field validation in CodeIgniter.

Before you begin to implement CodeIgniter file upload validation take a look at the simple files and folder structure of this example script.


Upload Directory

You need to create a directory to store the uploaded files. For example, this script uploads files to the uploads/files/directory.

Controller (Files.php)

The Files controller contains 2 functions, upload() and file_check().

The upload() function handles the following functionality.

  • Loads the file upload form.
  • Validates file input field to check whether it is empty or the file type is not supported.
  • Uploads the submitted file to the server.

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.

The file_check() is a validation callback function that checks whether the file input field is empty or selected file is not allowed.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 * Files management class created by semicolonworld
class Files extends CI_Controller {
__construct() {
    public function 
$data = array();
//load form validation library
//load file helper

$this->form_validation->run() == true){
//upload configuration
$config['upload_path']   = 'uploads/files/';
$config['allowed_types'] = 'gif|jpg|png|pdf';
$config['max_size']      = 1024;
//upload file to directory
$uploadData $this->upload->data();
$uploadedFile $uploadData['file_name'];
                     *insert file information into the database
$data['success_msg'] = 'File has been uploaded successfully.';
$data['error_msg'] = $this->upload->display_errors();
//load the view
     * file value and type check during validation
public function file_check($str){
$allowed_mime_type_arr = array('application/pdf','image/gif','image/jpeg','image/pjpeg','image/png','image/x-png');
$mime get_mime_by_extension($_FILES['file']['name']);
$_FILES['file']['name']) && $_FILES['file']['name']!=""){
$this->form_validation->set_message('file_check''Please select only pdf/gif/jpg/png file.');
$this->form_validation->set_message('file_check''Please choose a file to upload.');

View (files/upload.php)

This view file contains upload form HTML that allows user to select a file for upload. The form is submitted to the upload() method of Files controller for validation and upload.

'<p class="statusMsg">'.$success_msg.'</p>';
'<p class="statusMsg">'.$error_msg.'</p>';
?> <form method="post" enctype="multipart/form-data"> <p><input type="file" name="file"/></p> <?php echo form_error('file','<p class="help-block">','</p>'); ?> <p><input type="submit" name="uploadFile" value="UPLOAD"/></p> </form>

Related Articles

Comments 0