Validasi upload file di CodeIgniter

0
Validasi upload file di CodeIgniter

CodeIgniter menyediakan class validasi form yang membantu untuk memvalidasi bidang form dengan menulis sedikit kode. Umumnya, kita menggunakan attribut required dalam CodeIgniter untuk memvalidasi bidang form yang wajib diisi. Tapi atrribut required tidak bekerja ketika kamu memvalidasi bidang input file di CodeIgniter. Dalam tutorial CodeIgniter ini, kita akan belajar cara validasi upload file di CodeIginiter.

Sebelum kita mulai mengimplementasikan validasi upload file di CodeIgniter lihatlah file dan struktur folder script ini.

CodeIgniter

  • application
    • controllers
      • File.php
    • views
      • file
        • upload.php
  • upload
    • file

Direktori Upload

Kamu harus membuat direktori untuk menyimpan file yang diupload. Misalnya, script ini meng-upload file ke direktori upload/file/.

Controller (File.php)

Controller File berisi 2 fungsi, upload() dan cek_file().

Fungsi upload() menangani fungsionalitas berikut.

  • Memuat form file upload.
  • Memvalidasi bidang input file untuk memeriksa apakah itu kosong atau format file tidak didukung.
  • Upload file yang dikirimkan ke server.

Berikut ini Library built-in CodeIgniter dan helper yang digunakan untuk meng-upload file dengan validasi di CodeIgniter.

  • form_validation – membantu untuk memvalidasi bidang form.
  • file – menyediakan fungsi get_mime_by_extension() untuk mendapatkan tipe mime dari file yang diupload
  • upload – membantu untuk meng-upload file ke server.

callback_cek_file() adalah fungsi validasi callback yang memeriksa apakah bidang file input kosong atau file yang dipilih tidak diperbolehkan.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class File extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    public function upload(){
        $data = array();

        //Memuat Library validasi form
        $this->load->library('form_validation');

        //Memuat file helper
        $this->load->helper('file');

        if($this->input->post('uploadFile')){
            $this->form_validation->set_rules('file', '', 'callback_cek_file');

            if($this->form_validation->run() == true){
                //konfigurasi upload
                $config['upload_path']   = 'upload/file/';
                $config['allowed_types'] = 'gif|jpg|png|pdf';
                $config['max_size']      = 1024;
                $this->load->library('upload', $config);
                //upload file ke direktori
                if($this->upload->do_upload('file')){
                    $uploadData = $this->upload->data();
                    $uploadedFile = $uploadData['file_name'];

                    /*
                     *memasukkan informasi file ke dalam database
                     *.......
                     */

                    $data['success_msg'] = 'File telah berhasil diupload.';
                }else{
                    $data['error_msg'] = $this->upload->display_errors();
                }
            }
        }

        //memuat view
        $this->load->view('file/upload', $data);
    }

    /*
     * format file diperiksa saat validasi
     */
    public function cek_file($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']);
        if(isset($_FILES['file']['name']) && $_FILES['file']['name']!=""){
            if(in_array($mime, $allowed_mime_type_arr)){
                return true;
            }else{
                $this->form_validation->set_message('cek_file', 'Silahkan pilih hanya file pdf/gif/jpg/png.');
                return false;
            }
        }else{
            $this->form_validation->set_message('cek_file', 'Silakan pilih file untuk diupload.');
            return false;
        }
    }
}

View (file/upload.php)

File view ini berisi upload form HTML yang memungkinkan pengguna untuk memilih file untuk diupload. Form dikirimkan ke metode upload() dari File controller untuk validasi dan upload.

<!DOCTYPE html>
<head>
<title>Validasi upload file di CodeIgniter - Codingan.com</title>
</head>
<body>
<div class="container">
    <h1>Validasi upload file di CodeIgniter - Codingan.com</h1>
    <div class="row">
  <?php
   if(!empty($success_msg)){
    echo '<p class="statusMsg">'.$success_msg.'</p>';
   }elseif(!empty($error_msg)){
    echo '<p class="statusMsg">'.$error_msg.'</p>';
   }
  ?>
  <form method="post" enctype="multipart/form-data">
   <p><input type="file" name="file"/>
   <?php echo form_error('file','<span class="help-block">','</span>'); ?></p>
   <p><input type="submit" name="uploadFile" value="UPLOAD"/></p>
  </form>
    </div>
</div>
</body>
</html>

Kesimpulan

Di sini saya sudah menjelaskan cara validasi upload file di CodeIgniter. Juga, proses upload file di CodeIgniter dapat dilihat pada tutorial ini. Dalam contoh script ini, hanya file GIF, PNG, JPG, dan PDF yang diperbolehkan untuk diupload, tetapi kamu dapat mengubah format file yang diperbolehkan berdasarkan kebutuhanmu. Kamu mungkin juga ingin membaca Cara validasi ekstensi file dengan JavaScript.

Pecandu Aceh Gayo dan 182. Follow Instagram ↓↓↓
BAGIKAN

Leave a Reply

Jadilah yang pertama untuk berkomentar!

avatar
400
  Subscribe  
Beritahu