Cara Upload File Dengan Codeigniter Dengan Mudah

Created at by Aris Munandar

Pada tutorial kali ini kita akan membahas bagaimana cara upload file dengan codeigniter dan menyimpan ke database, file yang dimaksudnya dapat berupa file dokumen ataupun gambar, dan menyimpannya ke dalam database sehingga mudah untuk di tampilkan dan di unduh kembali.

Cara Upload Dengan Codeigniter

Berikut ini adalah cara upload file dengan codeigniter dan menyimpannya ke dalam database. Tutorial ini akan dibahas step-by-step beserta gambar untuk mempermudah dalam belajar upload file dengan codeigniter.

Step 1: Download Codeigniter & Install Codeigniter

Langkah pertama adalah siapkan dulu codeigniter, karna ditutorial kali ini menggunakan codeigniter versi 3 maka silahkan anda download codeigniter versi 3.

http://codeigniter.com/download

Perhatikan gambar dibawah ini:

Cara upload dengan codeigniter

Jika sudah selesai mengunduh codeigniter versi 3 selanjutnya silahkan ekstrak file tersebut didalam folder web server anda, dan beri nama folder tersebut dengan nama ci-upload, sehingga nantinya akan bisa di akses dengan url localhost/ci-upload.

Jika sudah anda ekstrak dan diletakan didalam folder web server maka anda silahkan ketik di url browser dengan url localhost/ci-upload, jika sudah berhasil maka seharusnya akan muncul seperti tampilan dibawah ini.

tampilan pembuka codeigniter - cara upload dengan codeigniter

Step 2: Membuat Database Upload

Jika codeigniter sudah berhasil anda install selanjutnya membuat database untuk menyimpan data-data file yang akan di upload, sehingga dapat di tampilkan.

Buatlah database dengan nama ci_upload:

CREATE DATABASE ci_upload;

Lalu buat tabel dengan script dibawah ini:

CREATE TABLE upload(
     id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
     nama_file VARCHAR(200) NOT NULL,
     tipe_file VARCHAR(50) NOT NULL,
     ukuran_file VARCHAR(10) NOT NULL,
     tanggal_upload TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Step 3: Mengatur Konfigurasi 

Pertama-tama yang perlu kita lakukan adalah mengatur konfigurasi, pada tutorial ini sangat mudah sekali tidak tidak perlu memerlukan banyak konfigurasi, kecuali jika proyek anda sudah besar tentunya akan banyak konfigurasi-konfigurasi yang diperlukan sesuai dengan kebutuhan. Didalam tutorial ini hanyalah membutuhan modul session dan database sehingga anda hanya perlu menentukan path session dimana lokasi session akan disimpan dan sambungan database anda.

Buka file /application/config/config.php, lalu cari $config['sess_save_path'] dan ubah seperti kode dibawah ini:

$config['sess_save_path'] = sys_get_temp_dir();Code language: PHP (php)

Selanjutnya membuat konfigurasi database.

Buka file /application/config/autoload.php lalu cari kode $autoload['libraries'] dan ubah menjadi seperti dibawah ini:

$autoload['libraries'] = array('database');Code language: PHP (php)

Selanjutnya buka file /application/config/database.php lalu atur konfigurasi database anda.

$db['default'] = array(
     ...
     'hostname' => 'localhost',
     'username' => 'username database anda',
     'password' => 'password database anda',
     'database' => 'ci_upload',
     ...
);Code language: PHP (php)

Step 4: Membuat Controller

Buatlah sebuah file dengan nama Upload_Controller.php di folder /application/controllers/ lalu masukkan kode dibawah ini:

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

class Upload_Controller extends CI_Controller 
{
     public function __construct()
     {
          parent::__construct();

          // Load models
          $this->load->model('upload_model');

          // Load helpers
          $this->load->helper('url');

          // Load libraries
          $this->load->library('session');
          $this->load->library('form_validation');
     }

     public function index()
     {
          $data['uploads'] = $this->upload_model->all();

          $this->load->view('upload_view', $data);
     }

     public function upload()
     {
          $config['upload_path'] = './upload';
          $config['allowed_types'] = 'jpg|jpeg|png|svg';
          $config['max_size'] = 3000;

          $this->load->library('upload', $config);

          if($this->upload->do_upload('file')) {

               $fileData = $this->upload->data();

               $upload = [
                    'nama_file' => $fileData['file_name'],
                    'tipe_file' => $fileData['file_type'],
                    'ukuran_file' => $fileData['file_size'],
               ];

               if($this->upload_model->insert($upload)) {
                    $this->session->set_flashdata('success', '<p>Selamat! Anda berhasil mengunggah file <strong>'. $fileData['file_name'] .'</strong></p>');
               } else {
                    $this->session->set_flashdata('error', '<p>Gagal! File '. $fileData['file_name'] .' tidak berhasil tersimpan di database anda</p>');
               }

               redirect(base_url('upload'));
          } else {
               $this->session->set_flashdata('error', $this->upload->display_errors());
               redirect(base_url('upload'));
          }
     }
}Code language: HTML, XML (xml)

Perhatikan pada bagian $config['upload_path'] = './upload', letak lokasi file-file yang anda  update akan tersimpan dan berada di dalam folder root CI anda dengan nama folder /upload maka dari itu silahkan buat folder nama nama upload didalam folder root CI anda.

Lalu pada bagian $config['allowed_types'] = 'jpg|jpeg|png|svg' anda dapat menentukan filter jenis-jenis file apa saja yang boleh di upload dengan cara menambahkan |ekstensi_file sesuai denga keinginan anda.

Step 5: Membuat Model

Pada step ini kita akan membuat model yang fungsinya untuk melakukan penulisan data di dalam database upload anda. Buatlah file dengan nama Upload_Model.php di folder /application/models/ setelah itu masukkan kode dibawah ini:

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

class Upload_model extends CI_Model
{
     public function all()
     {
          $this->db->select('*');
          $this->db->from('upload');
          $this->db->order_by('tanggal_upload', 'DESC');

          return $this->db->get();
     }

     public function insert($data)
     {
          $this->db->insert('upload', $data);

          return ($this->db->affected_rows() > 0) ? true : false;
     }
}Code language: HTML, XML (xml)

Step 6: Membuat Tampilan Form Upload

Pada step terakhir ini adalah bagian tampilan, untuk memudahkan penggunaan penulis membuat tampilan antar muka yang sangat sederhana, dengan tujuan agar mudah di modifikasi oleh anda.

Buatlah sebuah file dengan nama upload_view.php didalam folder /application/view lalu masukkan kode dibawah ini:

<!DOCTYPE html>
<html>
<head>
     <title>Tutorial Cara Upload Dengan Codeigniter</title>
     <style type="text/css">
          *, *::before, *::after {
               box-sizing: border-box;
          }
          body {
               margin: 0;
               padding: 0;
          }
          h1 {
               text-align: center;
          }
          form {
               position: relative;
               width: 50%;
               margin: 20px auto;
               padding: 20px;
               background-color: #f1f1f1;
               border: 1px solid #eeeeee;
               margin: 0 auto;
               border-radius: 4px;
               text-align: center;
          }
          .alert-success,
          .alert-danger {
               border-radius: 4px;
               padding: 5px 20px;
               width: 50%;
               margin: 20px auto 0 auto;
               color: #ffffff;
          }
          .alert-success {
               background-color: #5cb85c;
          }
          .alert-danger {
               background-color: #d9534f;
          }
          .file-list {
               width: 50%;
               margin: 20px auto;
          }
          .file-list table {
               width: 100%;
               margin: 0;
               padding: 0;
          }
          .file-list table thead tr th {
               border-top: 1px solid #dddddd;
               border-bottom: 1px solid #dddddd;
               border-left: 1px solid #dddddd;
               background-color: #f1f1f1;
               padding: 5px 10px;
          }
          .file-list table thead tr th:last-child {
               border-right: 1px solid #dddddd;
          }
          .file-list table tbody tr td {
               border-bottom: 1px solid #dddddd;
               border-left: 1px solid #dddddd;
               padding: 5px 10px;
          }
          .file-list table tbody tr td:last-child {
               border-right: 1px solid #dddddd;
          }
     </style>
</head>
<body>
     <h1>Cara Upload Dengan Codeigniter</h1>
     <form method="POST" action="<?php echo base_url('upload/upload') ?>" enctype="multipart/form-data">
          <input type="file" name="file">
          <button type="submit">Upload</button>
     </form>
     <?php if($this->session->flashdata('success')): ?>
          <div class="alert-success">
               <?php echo $this->session->flashdata('success'); ?>
          </div>
     <?php endif; ?>
     <?php if($this->session->flashdata('error')): ?>
          <div class="alert-danger">
               <?php echo $this->session->flashdata('error'); ?>
          </div>
     <?php endif; ?>
     <div class="file-list">
          <table cellpadding="0" cellspacing="0">
               <thead>
                    <tr>
                         <th style="width: 5%; text-align: center; vertical-align: middle;">No</th>
                         <th style="width: 80%; text-align: left; vertical-align: middle;">Nama File</th>
                         <th style="width: 15%; text-align: center; vertical-align: middle;">Download</th>
                    </tr>
               </thead>
               <tbody>
               <?php if($uploads->num_rows() > 0): ?>
                    <?php $nomor = 1; ?>
                    <?php foreach($uploads->result() as $file): ?>
                          <tr>
                              <td style="text-align: center; vertical-align: middle;"><?php echo $nomor++; ?></td>
                              <td style="text-align: left; vertical-align: middle;"><?php echo $file->nama_file; ?></td>
                              <td style="text-align: center; vertical-align: middle;">
                                   <a href="<?php echo base_url('upload/' . $file->nama_file) ?>" download>Download</a>
                               </td>
                         </tr>
                    <?php endforeach; ?>
               <?php else: ?>
                    <tr>
                         <td style="text-align: center; vertical-align: middle;" colspan="3">Tidak ada data</td>
                    </tr>
                <?php endif; ?>
               </tbody>
          </table>
     </div>
</body>
</html>Code language: HTML, XML (xml)

Step 6: Mengatur Routes Codeigniter

Selanjutnya mengatur route, fungsi route ini adalah untuk menentukan atau memanipulasi url yang ditampilkan pada url browser.

Buka file routes.php di dalam folder /application/config/ lalu masukkan kode dibawah ini di paling akhir di dalam file routes tersebut.

$route['upload'] = 'upload_controller/index';
$route['upload/upload'] = 'upload_controller/upload';Code language: PHP (php)

Step 7: Melakukan Pengetesan

Selanjutnya pada step terakhir adalah anda hanya tinggal melakukan testing pada kode yang tadi anda buat, berikut ini tampilan apabila anda mengaksesnya melalui http://localhost/ci-upload:

Tampilan upload codeigniter - cara upload dengan codeigniter

Tampilan tersebut sangat sederhana sekali, karena memang tujuan penulis adalah agar anda dapat melakukan perubahan, modifikasi yang lebih baik lagi yang mungkin berguna untuk proyek anda kedepannya, semoga tutorial cara upload dengan codeigniter ini dapat bermanfaat.

6 Comments

fadli

fadli

pas klik upload langsung kya gni, The requested URL was not found on this server.
Reply #2078
Aris Munandar

Aris Munandar

@fadli
kemungkinan ada kesalahan di route kak, tidak menunjukan path yang betul.
Reply #2079
pointxx

pointxx

boleh minta source codenya bang?
Reply #2092
Aris Munandar

Aris Munandar

@pointxx
tidak ada
Reply #2093
Agus Pranata

Agus Pranata

Cara nampilkan gambarnya langsung bagaimana?
Reply #2400
Aris Munandar

Aris Munandar

@Agus Pranata
Untuk menampilkan gambar secara langsung setelah di upload gunakan tag , diarahkan ke direktori atau url gambar yang sudah di upload tersebut.
Reply #2401

Leave comment

Alamat email Anda tidak akan dipublikasikan. Required fields are marked *

news-1701

sabung ayam online

yakinjp

yakinjp

rtp yakinjp

slot thailand

yakinjp

yakinjp

yakin jp

yakinjp id

maujp

maujp

maujp

maujp

sabung ayam online

sabung ayam online

judi bola online

sabung ayam online

judi bola online

slot mahjong ways

slot mahjong

sabung ayam online

judi bola

live casino

sabung ayam online

judi bola

live casino

SGP Pools

slot mahjong

sabung ayam online

slot mahjong

SLOT THAILAND

cuaca 228000566

cuaca 228000567

cuaca 228000568

cuaca 228000569

cuaca 228000570

cuaca 228000571

cuaca 228000572

cuaca 228000573

cuaca 228000574

cuaca 228000575

cuaca 228000576

cuaca 228000577

cuaca 228000578

cuaca 228000579

cuaca 228000580

cuaca 228000581

cuaca 228000582

cuaca 228000583

cuaca 228000584

cuaca 228000585

cuaca 228000586

cuaca 228000587

cuaca 228000588

cuaca 228000589

cuaca 228000590

cuaca 228000591

cuaca 228000592

cuaca 228000593

cuaca 228000594

cuaca 228000595

cuaca 228000596

cuaca 228000597

cuaca 228000598

cuaca 228000599

cuaca 228000600

cuaca 228000601

cuaca 228000602

cuaca 228000603

cuaca 228000604

cuaca 228000605

cuaca 228000606

cuaca 228000607

cuaca 228000608

cuaca 228000609

cuaca 228000610

cuaca 228000611

cuaca 228000612

cuaca 228000613

cuaca 228000614

cuaca 228000615

cuaca 228000616

cuaca 228000617

cuaca 228000618

cuaca 228000619

cuaca 228000620

cuaca 228000621

cuaca 228000622

cuaca 228000623

cuaca 228000624

cuaca 228000625

cuaca 228000626

cuaca 228000627

cuaca 228000628

cuaca 228000629

cuaca 228000630

info 328000511

info 328000512

info 328000513

info 328000514

info 328000515

info 328000516

info 328000517

info 328000518

info 328000519

info 328000520

info 328000521

info 328000522

info 328000523

info 328000524

info 328000525

info 328000526

info 328000527

info 328000528

info 328000529

info 328000530

info 328000531

info 328000532

info 328000533

info 328000534

info 328000535

info 328000536

info 328000537

info 328000538

info 328000539

info 328000540

info 328000541

info 328000542

info 328000543

info 328000544

info 328000545

info 328000546

info 328000547

info 328000548

info 328000549

info 328000550

berita 428009016

berita 428009617

berita 428010218

berita 428010819

berita 428011420

analisis rtp 428011421

manajemen modal 428011422

variabel rtp live 428011423

algoritma kasino 428011424

efisiensi rtp 428011425

distribusi scatter 428011426

respon rtp 428011427

volatilitas livecasino 428011428

data rtp sweetbonanza 428011429

algoritma scatter 428011430

metrik rtp 428011431

interface server 428011432

fluktuasi rtp 428011433

log historis 428011434

komparatif rtp 428011435

berita 428011421

berita 428011422

berita 428011423

berita 428011424

berita 428011425

berita 428011426

berita 428011427

berita 428011428

berita 428011429

berita 428011430

berita 428011431

berita 428011432

berita 428011433

berita 428011434

berita 428011435

berita 428011436

berita 428011437

berita 428011438

berita 428011439

berita 428011440

berita 428011441

berita 428011442

berita 428011443

berita 428011444

berita 428011445

berita 428011446

berita 428011447

berita 428011448

berita 428011449

berita 428011450

kajian 638000001

kajian 638000002

kajian 638000003

kajian 638000004

kajian 638000005

kajian 638000006

kajian 638000007

kajian 638000008

kajian 638000009

kajian 638000010

kajian 638000011

kajian 638000012

kajian 638000013

kajian 638000014

kajian 638000015

kajian 638000016

kajian 638000017

kajian 638000018

kajian 638000019

kajian 638000020

kajian 638000021

kajian 638000022

kajian 638000023

kajian 638000024

kajian 638000025

kajian 638000026

kajian 638000027

kajian 638000028

kajian 638000029

kajian 638000030

article 788000001

article 788000002

article 788000003

article 788000004

article 788000005

article 788000006

article 788000007

article 788000008

article 788000009

article 788000010

article 788000011

article 788000012

article 788000013

article 788000014

article 788000015

news-1701
news-1701

sabung ayam online

yakinjp

yakinjp

rtp yakinjp

slot thailand

yakinjp

yakinjp

yakin jp

yakinjp id

maujp

maujp

maujp

maujp

sabung ayam online

sabung ayam online

judi bola online

sabung ayam online

judi bola online

slot mahjong ways

slot mahjong

sabung ayam online

judi bola

live casino

sabung ayam online

judi bola

live casino

SGP Pools

slot mahjong

sabung ayam online

slot mahjong

SLOT THAILAND

cuaca 228000566

cuaca 228000567

cuaca 228000568

cuaca 228000569

cuaca 228000570

cuaca 228000571

cuaca 228000572

cuaca 228000573

cuaca 228000574

cuaca 228000575

cuaca 228000576

cuaca 228000577

cuaca 228000578

cuaca 228000579

cuaca 228000580

cuaca 228000581

cuaca 228000582

cuaca 228000583

cuaca 228000584

cuaca 228000585

cuaca 228000586

cuaca 228000587

cuaca 228000588

cuaca 228000589

cuaca 228000590

cuaca 228000591

cuaca 228000592

cuaca 228000593

cuaca 228000594

cuaca 228000595

cuaca 228000596

cuaca 228000597

cuaca 228000598

cuaca 228000599

cuaca 228000600

cuaca 228000601

cuaca 228000602

cuaca 228000603

cuaca 228000604

cuaca 228000605

cuaca 228000606

cuaca 228000607

cuaca 228000608

cuaca 228000609

cuaca 228000610

cuaca 228000611

cuaca 228000612

cuaca 228000613

cuaca 228000614

cuaca 228000615

cuaca 228000616

cuaca 228000617

cuaca 228000618

cuaca 228000619

cuaca 228000620

cuaca 228000621

cuaca 228000622

cuaca 228000623

cuaca 228000624

cuaca 228000625

cuaca 228000626

cuaca 228000627

cuaca 228000628

cuaca 228000629

cuaca 228000630

info 328000511

info 328000512

info 328000513

info 328000514

info 328000515

info 328000516

info 328000517

info 328000518

info 328000519

info 328000520

info 328000521

info 328000522

info 328000523

info 328000524

info 328000525

info 328000526

info 328000527

info 328000528

info 328000529

info 328000530

info 328000531

info 328000532

info 328000533

info 328000534

info 328000535

info 328000536

info 328000537

info 328000538

info 328000539

info 328000540

info 328000541

info 328000542

info 328000543

info 328000544

info 328000545

info 328000546

info 328000547

info 328000548

info 328000549

info 328000550

berita 428009016

berita 428009617

berita 428010218

berita 428010819

berita 428011420

analisis rtp 428011421

manajemen modal 428011422

variabel rtp live 428011423

algoritma kasino 428011424

efisiensi rtp 428011425

distribusi scatter 428011426

respon rtp 428011427

volatilitas livecasino 428011428

data rtp sweetbonanza 428011429

algoritma scatter 428011430

metrik rtp 428011431

interface server 428011432

fluktuasi rtp 428011433

log historis 428011434

komparatif rtp 428011435

berita 428011421

berita 428011422

berita 428011423

berita 428011424

berita 428011425

berita 428011426

berita 428011427

berita 428011428

berita 428011429

berita 428011430

berita 428011431

berita 428011432

berita 428011433

berita 428011434

berita 428011435

berita 428011436

berita 428011437

berita 428011438

berita 428011439

berita 428011440

berita 428011441

berita 428011442

berita 428011443

berita 428011444

berita 428011445

berita 428011446

berita 428011447

berita 428011448

berita 428011449

berita 428011450

kajian 638000001

kajian 638000002

kajian 638000003

kajian 638000004

kajian 638000005

kajian 638000006

kajian 638000007

kajian 638000008

kajian 638000009

kajian 638000010

kajian 638000011

kajian 638000012

kajian 638000013

kajian 638000014

kajian 638000015

kajian 638000016

kajian 638000017

kajian 638000018

kajian 638000019

kajian 638000020

kajian 638000021

kajian 638000022

kajian 638000023

kajian 638000024

kajian 638000025

kajian 638000026

kajian 638000027

kajian 638000028

kajian 638000029

kajian 638000030

article 788000001

article 788000002

article 788000003

article 788000004

article 788000005

article 788000006

article 788000007

article 788000008

article 788000009

article 788000010

article 788000011

article 788000012

article 788000013

article 788000014

article 788000015

news-1701