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
Contents
Tujuan Pembelajaran
Setelah menyelesaikan BAB 12, Anda akan mampu:
- Membuat form upload file/gambar
- Mengambil file dari form
- Memvalidasi tipe dan ukuran file
- Menyimpan file ke folder server
- 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_heightmembatasi 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.