BAB 12 – Upload File & Gambar: Mengelola File di CodeIgniter

BAB 12 – Upload File & Gambar: Mengelola File di CodeIgniter

Setelah menguasai CRUD dan autentikasi, langkah berikutnya adalah mengelola file dan gambar.

Fitur upload file penting untuk aplikasi modern, misalnya:

  • Mengunggah foto profil user
  • Menambahkan dokumen / PDF
  • Upload produk dengan gambar

CodeIgniter menyediakan library upload yang memudahkan proses ini, termasuk validasi tipe dan ukuran file.

Pada BAB ini, kita akan membahas:

  • Upload file
  • Upload gambar
  • Validasi file
  • Menyimpan file ke folder
  • Menampilkan gambar

Tujuan Pembelajaran

Setelah menyelesaikan BAB 12, Anda akan mampu:

  1. Membuat form upload file/gambar
  2. Mengambil file dari form
  3. Memvalidasi tipe dan ukuran file
  4. Menyimpan file ke folder server
  5. Menampilkan file/gambar di halaman web

12.1 Upload File

Form Upload File

View upload_form.php:

<h2>Upload File</h2>
<form method="post" action="<?= base_url('file/do_upload') ?>" enctype="multipart/form-data">
    <label>Pilih file:</label><br>
    <input type="file" name="userfile"><br><br>
    <button type="submit">Upload</button>
</form>

Controller

class File extends CI_Controller {
    public function do_upload() {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'pdf|doc|docx|txt';
        $config['max_size'] = 2048; // 2MB

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

        if(!$this->upload->do_upload('userfile')) {
            $error = $this->upload->display_errors();
            $this->load->view('upload_form', ['error' => $error]);
        } else {
            $data = $this->upload->data();
            $this->load->view('upload_success', ['upload_data' => $data]);
        }
    }
}

12.2 Upload Gambar

Upload gambar sama seperti file, tapi biasanya divalidasi lebih ketat:

$config['upload_path'] = './uploads/images/';
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$config['max_size'] = 2048;
$config['max_width'] = 2000;
$config['max_height'] = 2000;
  • max_width & max_height membatasi resolusi gambar
  • File yang melebihi ukuran / resolusi akan ditolak

12.3 Validasi File

Library upload CodeIgniter otomatis memvalidasi:

  • Tipe file → sesuai allowed_types
  • Ukuran file → sesuai max_size
  • Resolusi gambar → optional max_width & max_height

Jika validasi gagal → display_errors() menampilkan pesan error.

📌 Tips:

  • Selalu validasi file sebelum disimpan
  • Jangan mengizinkan tipe file berbahaya seperti .php

12.4 Menyimpan File ke Folder

File yang berhasil diupload akan disimpan di folder yang sudah ditentukan:

  • Contoh: ./uploads/ atau ./uploads/images/
  • Pastikan folder memiliki permission write (chmod 755 atau 777 sementara)

Contoh struktur folder:

project/
├─ application/
├─ system/
├─ uploads/
│  ├─ images/
│  └─ docs/

12.5 Menampilkan Gambar

Setelah upload sukses, kita bisa menampilkan gambar di halaman web:

Controller

$data['filename'] = $this->upload->data('file_name');
$this->load->view('upload_success', $data);

View (upload_success.php)

<h2>Upload Berhasil!</h2>
<img src="<?= base_url('uploads/images/'.$filename) ?>" width="200px">
<p>File berhasil diupload: <?= $filename ?></p>

📌 Tips:

  • Gunakan base_url() agar path gambar dinamis
  • Bisa membuat galeri atau daftar file yang diupload

Penutup

Dengan BAB 12 ini, aplikasi CodeIgniter Anda sudah mampu:

  • Upload file atau gambar dengan aman
  • Memvalidasi tipe dan ukuran file
  • Menyimpan file ke folder server
  • Menampilkan file/gambar di halaman web

Langkah berikutnya bisa mengembangkan fitur seperti upload multiple file, crop gambar, atau download file, agar aplikasi semakin lengkap dan profesional.