Upload multiple file menggunakan Codeigniter 3.0




Upload multiple file menggunakan Codeigniter 3.0
Kali ini saya akan menjelaskan bagaimana caranya untuk upload multiple file menggunakan  framework codeigniter versi 3.0. Codeigniter sendiri tergolong framework yang sangat powerfull dan ringan sehingga banyak disukai banyak programmer php(open source).

Langsung saja ke topik permasalahan bagaimana upload multiple file menggunakan Codeigniter 3.0, untuk langkah-langkahnya sebagai berikut.

#Pertama
Kita siapkan dulu table penampung file saya membuat contoh menggunakan table tesfile sobat bisa kombinasikan dengan lainnya.

CREATE TABLE `testfile` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `file_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `uploaded_on` datetime NOT NULL,
 `status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL DEFAULT '1' COMMENT '1=Active, 0=Inactive',
 PRIMARY KEY (`id`)
) ;

#Kedua
Buat folder disini saya membuat nama dengan /uploads/ setara dengan core Codeigniter sendiri jika sobat menggunakan folder yang berbeda silahkan ubah atau sesuaikan.

#Ketiga
Saya siapkan kontroller dengan Upload.php ingat penulisan controller CI harus diawali dengan huruf besar ya guys...

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

class Upload_Files extends CI_Controller {
    function  __construct() {
        parent::__construct();
        // Load session library
        $this->load->library('session');
     
        // Load file model
        $this->load->model('file');
    }
 
    function index(){
        $data = array();
        if($this->input->post('fileSubmit') && !empty($_FILES['testfiles']['name'])){
            $filesCount = count($_FILES['testfiles']['name']);
            for($i = 0; $i < $filesCount; $i++){
                $_FILES['file']['name']     = $_FILES['testfiles']['name'][$i];
                $_FILES['file']['type']     = $_FILES['testfiles']['type'][$i];
                $_FILES['file']['tmp_name'] = $_FILES['testfiles']['tmp_name'][$i];
                $_FILES['file']['error']     = $_FILES['testfiles']['error'][$i];
                $_FILES['file']['size']     = $_FILES['testfiles']['size'][$i];
             
                // File upload configuration
                $uploadPath = 'uploads/';
                $config['upload_path'] = $uploadPath;
                $config['allowed_types'] = 'jpg|jpeg|png|gif';
             
                $this->load->library('upload', $config);
                $this->upload->initialize($config);
             
                if($this->upload->do_upload('file')){
                    $fileData = $this->upload->data();
                    $uploadData[$i]['file_name'] = $fileData['file_name'];
                    $uploadData[$i]['uploaded_on'] = date("Y-m-d H:i:s");
                }
            }
         
            if(!empty($uploadData)){
                $insert = $this->file->insert($uploadData);
             
                $statusMsg = $insert?'File upload berhasil.':'terjadi error upload data.';
                $this->session->set_flashdata('statusMsg',$statusMsg);
            }
        }
     
      $this->load->view("index");
    }

}

#Empat
Untuk keempat siapkan view disini saya membuat dengan nama index.php dengan tujuan action satu controller dan function yang sama yaitu index

<p><?php echo $this->session->flashdata('statusMsg'); ?></p>

<form method="post" action="" enctype="multipart/form-data">
    <div class="form-group">
        <label>Choose Files</label>
        <input type="file" name="testfiles[]" multiple/>
    </div>
    <div class="form-group">
        <input type="submit" name="fileSubmit" value="COBA UPLOAD"/>
    </div>
</form>


#Lima
Membuat file model di CI dengan nama file sebagai berikut yang tujuannya untuk menampilkan dan insert data ke table.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class File extends CI_Model{
    function __construct() {
        $this->tableName = 'testfile';
    }
 
    public function getRows($id = ''){
        $this->db->select('id,file_name,uploaded_on');
        $this->db->from('testfile');
        if($id){
            $this->db->where('id',$id);
            $query = $this->db->get();
            $result = $query->row_array();
        }else{
            $this->db->order_by('uploaded_on','desc');
            $query = $this->db->get();
            $result = $query->result_array();
        }
        return !empty($result)?$result:false;
    }
 
    /*
     * Insert file ke db disini
     * @param array data bro
     */
    public function insert($data = array()){
        $insert = $this->db->insert_batch('testfile',$data);
        return $insert?true:false;
    }
 
}

Nah sampai disitu sudah selesai jika sobat ingin mendapatkan informasi file yang diupload seperti ukuran, size, dll bisa baca di codeigniter.com
.


Tags: , ,