Langsung ke konten utama

Cara Implementasi Upload Gambar dengan Preview di Laravel & JS

Pendahuluan

Bayangin lagi ngerjain fitur profil user, tapi user terus-terusan komplen karena mereka nggak tahu gambar apa yang baru aja mereka pilih sebelum di-submit. Rasanya tuh kayak naruh barang di kotak tertutup, kita nggak tahu isinya bener atau nggak sampai beneran dikirim ke server. Laravel emang jago urusan back-end, tapi buat urusan UX kayak preview gambar, kita perlu kolaborasi manis sama JavaScript biar user nggak harus nunggu loading request cuma buat tahu fotonya salah upload.

Tips & Best Practices

  • Di banyak project, biasanya saya selalu ngecek ukuran file lewat client-side dulu sebelum preview biar browser nggak 'sesak' ngerender file 20MB ke atas.
  • Selalu gunakan URL.createObjectURL() buat bikin temporary link; ini teknik paling enteng karena kita nggak perlu nge-upload dulu ke server buat sekadar nampilin preview-nya.
  • Biasanya saya nambahin tombol 'Hapus' atau 'Reset' tepat di atas gambar preview, supaya user gampang ganti pilihan tanpa harus refresh halaman atau nunggu proses validasi gagal.

Contoh Kode

Di sisi front-end, cukup manfaatin event change pada input file. Saya biasa pakai snippet sederhana ini:

<input type="file" id="foto" accept="image/*">
<img id="preview" src="#" style="display:none;">

<script>
document.getElementById('foto').onchange = evt => {
const [file] = document.getElementById('foto').files
if (file) {
const preview = document.getElementById('preview');
preview.src = URL.createObjectURL(file);
preview.style.display = 'block';
}
}
</script>

Di sisi Laravel, jangan lupa pastiin store-nya rapi:

$request->file('foto')->store('profiles', 'public');

Variasi Implementasi

Kalau project-nya butuh crop atau resize, saya biasanya beralih ke library kayak Cropper.js. Kalau sekadar preview, cara native di atas udah lebih dari cukup. Bedanya, pakai library tambahan nambahin bundle size, tapi kalau butuh manipulasi gambar lebih jauh, itu investasi yang layak banget.

Kesalahan Umum

  1. Lupa nambahin enctype="multipart/form-data" di form, yang ujungnya bikin file kosong pas nyampe di controller.
  2. Nggak nge-handle tipe file, jadi user bisa aja upload file .exe atau .pdf ke kolom foto.
  3. Biarkan file preview menumpuk di memory browser tanpa di-revoke, padahal memori browser ada batasnya.
  4. Lupa nambahin limit ukuran file di PHP.ini, alhasil pas file agak gede, Laravel balikin error 413.
  5. Asumsi semua user bakal pakai browser modern, padahal ada kalanya kita perlu fallback sederhana kalau fitur URL.createObjectURL nggak jalan.

Ringkasan

Bikin fitur upload dengan preview itu kayak nambahin 'nyawa' di aplikasi kita. User jadi ngerasa lebih terkontrol dan yakin sama apa yang mereka lakuin. Kuncinya bukan cuma di kodenya, tapi di gimana kita bikin alur user jadi lebih intuitif dan anti-panik pas upload data.

Komentar

Postingan populer dari blog ini

Cara Reset Password Database MySQL Menggunakan Laragon

Cara Reset Password Database MySQL Menggunakan Laragon Laragon adalah salah satu lingkungan pengembangan lokal (local development environment) yang populer di antara para pengembang web. Dalam beberapa kasus, mungkin kita perlu mereset password database MySQL pada Laragon jika lupa password atau untuk alasan keamanan tertentu. Berikut adalah langkah-langkah yang dapat kita ikuti untuk melakukan reset password database MySQL menggunakan Laragon:

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Apa Itu R dan L di Headset? Ini Dia Perbedaan dan Fungsinya yang Perlu Anda Ketahui

Arti R dan L di Headset: Apa Perbedaannya? Headset adalah alat yang digunakan untuk mendengarkan suara dari sumber audio seperti ponsel, komputer, atau pemutar musik. Headset biasanya terdiri dari dua bagian, yaitu earphone yang dimasukkan ke dalam telinga dan mikrofon yang digunakan untuk berbicara. Pada earphone, kita sering melihat ada tulisan R dan L. Apa arti dan perbedaan dari kedua huruf tersebut?