Coba bayangin kamu lagi bikin fitur upload foto profil buat aplikasi tugas kuliah. Semua terlihat lancar di komputer sendiri, tapi begitu temenmu coba upload file dari HP-nya, muncul error aneh atau ukuran filenya jadi 0 KB. Kesel banget kan? Nah, masalah kayak gini sebenarnya sering banget dialami pemula yang belum ngerti cara kerja upload file di CodeIgniter dengan benar.
Upload file itu kelihatannya sepele, tapi sebenarnya ada banyak hal yang perlu diperhatikan biar prosesnya aman dan tidak bikin server jebol. Untungnya, CodeIgniter sudah menyediakan library khusus yang bikin urusan upload jadi jauh lebih gampang dibanding bikin dari nol pakai PHP murni.
Coba pikirin proses upload file kayak kamu lagi nitip paket ke jasa ekspedisi. Kamu nggak bisa asal titip kardus sembarangan — ada aturan berat maksimal, jenis barang yang boleh dikirim, sampai label alamat tujuan yang harus jelas. Kalau kamu nekat kirim paket 50 kilo padahal batasnya cuma 20 kilo, ya jelas ditolak.
Sama persis kayak upload file di aplikasi web. Server juga punya "aturan pengiriman" sendiri: batas ukuran file, jenis file yang diizinkan (misalnya cuma JPG atau PNG), sampai ke mana file itu harus "dikirim" alias disimpan. Kalau kamu nggak atur aturan ini dari awal, ya wajar aja sering error.
Kesalahan paling umum yang sering ditemui: pemula langsung pakai tag <input type="file"> lalu berharap file otomatis tersimpan di server. Padahal, HTML cuma bertugas "membungkus" file itu buat dikirim, sementara proses penyimpanannya tetap harus ditangani di sisi backend alias server.
Selain itu, banyak juga yang lupa menambahkan atribut enctype="multipart/form-data" di form HTML-nya. Tanpa atribut ini, file yang kamu upload nggak akan pernah sampai ke server dengan benar — ibarat kamu nitip paket tapi lupa nempelin label pengirim, jadi nggak jelas ini paket apa.
<form action="<?= base_url('upload/proses') ?>" method="post" enctype="multipart/form-data">
<input type="file" name="foto_profil">
<button type="submit">Upload</button>
</form>
Nah, ini bagian serunya. CodeIgniter sudah menyiapkan library bernama Upload (di CI3) atau helper file upload di CI4 yang bisa langsung dipakai tanpa perlu bikin validasi ribet sendiri. Kamu tinggal atur aturan-aturan yang tadi disebutkan tadi dalam bentuk konfigurasi.
public function proses()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'jpg|jpeg|png';
$config['max_size'] = 2048; // dalam KB
$this->load->library('upload', $config);
if (!$this->upload->do_upload('foto_profil')) {
echo $this->upload->display_errors();
} else {
$data = $this->upload->data();
echo 'File berhasil diupload: ' . $data['file_name'];
}
}
Lihat betapa simpelnya? Kamu tinggal tentukan folder tujuan, jenis file yang diizinkan, dan batas ukurannya. Kalau ada yang melanggar aturan, library ini otomatis kasih pesan error yang jelas, jadi kamu nggak perlu bikin validasi manual satu-satu.
Menurut beberapa laporan keamanan aplikasi web, fitur upload file termasuk salah satu celah yang paling sering disalahgunakan untuk menyusupkan file berbahaya ke server, karena banyak developer pemula yang lupa membatasi jenis dan ukuran file. Artinya, validasi upload bukan cuma soal bikin fitur jalan, tapi juga soal menjaga keamanan aplikasi secara keseluruhan.
Bayangkan kalau kamu nggak batasi jenis file dan ada orang iseng upload file .php yang menyamar jadi gambar — bisa-bisa itu file dieksekusi di server dan bikin masalah besar. Makanya, pengaturan allowed_types itu bukan cuma formalitas, tapi benteng pertahanan pertama aplikasimu.
Upload file emang kelihatan sepele, tapi ternyata banyak detail kecil yang kalau diabaikan bisa bikin aplikasimu error bahkan rawan disusupi file berbahaya. Untungnya, CodeIgniter sudah menyediakan tools yang memudahkan proses ini asal kamu paham cara konfigurasinya dengan benar.
Jadi, sudah siap coba bikin fitur upload foto profil sendiri di project CodeIgniter-mu? Yuk langsung praktikkan kode di atas, lalu coba modifikasi aturannya sesuai kebutuhan aplikasimu. Siapa tahu, ilmu kecil ini yang bikin proyekmu jadi lebih aman dan profesional!
Download semua project premium tanpa batas mulai Rp99.000.