Cara Upload Gambar di Laravel dengan Validasi (Lengkap)

Upload gambar adalah fitur yang hampir selalu ada di aplikasi web โ€” foto profil, thumbnail artikel, produk, dan lain-lain. Laravel menyediakan cara yang rapi dan aman untuk menanga...

Cara Upload Gambar di Laravel dengan Validasi (Lengkap)

Upload gambar adalah fitur yang hampir selalu ada di aplikasi web โ€” foto profil, thumbnail artikel, produk, dan lain-lain. Laravel menyediakan cara yang rapi dan aman untuk menanganinya. Artikel ini membahas upload gambar dari form sampai menampilkannya, lengkap dengan validasi.

Langkah 1: Siapkan Form Upload

Form upload wajib memakai enctype="multipart/form-data":

<form action="/upload" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="gambar">
    <button type="submit">Upload</button>
</form>

Langkah 2: Validasi File di Controller

Selalu validasi tipe dan ukuran file demi keamanan โ€” jangan percaya input pengguna:

public function store(Request $request)
{
    $request->validate([
        'gambar' => 'required|image|mimes:jpg,jpeg,png,webp|max:2048', // max 2MB
    ]);

    // simpan ke storage/app/public/uploads
    $path = $request->file('gambar')->store('uploads', 'public');

    // simpan $path ke database bila perlu
    return back()->with('success', 'Gambar berhasil diupload!');
}

Aturan image memastikan file benar-benar gambar, mimes membatasi format, dan max:2048 membatasi ukuran (dalam kilobyte).

Langkah 3: Buat Symbolic Link Storage

Agar file di storage/app/public bisa diakses publik, jalankan sekali:

php artisan storage:link

Perintah ini membuat shortcut dari public/storage ke storage/app/public.

Langkah 4: Menampilkan Gambar

Gunakan helper asset() dengan prefix storage/:

<img src="{{ asset('storage/' . $path) }}" alt="Gambar">

Langkah 5: Memberi Nama File Sendiri (Opsional)

Kalau ingin nama file unik dan rapi, misalnya berdasarkan waktu:

$file = $request->file('gambar');
$namaFile = 'img_' . uniqid() . '.' . $file->getClientOriginalExtension();
$path = $file->storeAs('uploads', $namaFile, 'public');

Langkah 6: Menghapus Gambar Lama

Saat mengganti atau menghapus data, hapus juga filenya agar storage tidak menumpuk:

use Illuminate\Support\Facades\Storage;

Storage::disk('public')->delete($path);

Tips Keamanan

  • Selalu batasi mimes dan max ukuran file.
  • Jangan simpan file upload langsung di folder public tanpa validasi.
  • Untuk gambar besar, pertimbangkan me-resize agar hemat storage dan mempercepat loading.

Kesimpulan

Upload gambar di Laravel aman dan mudah selama Anda memvalidasi tipe & ukuran, menyimpan lewat store(), dan menjalankan storage:link. Dengan pola di atas, Anda bisa menangani foto profil, thumbnail, atau galeri produk dengan rapi. Untuk mempercepat loading gambar di situs, lihat juga panduan kami tentang optimasi performa Laravel.

upload gambar laravel upload file laravel validasi gambar laravel laravel store image laravel storage upload
Bagikan artikel
Kembali

Komentar (0)

Punya pertanyaan atau tambahan? Tulis di bawah โ€” tak perlu login.

Membalas komentarโ€ฆ batal

Belum ada komentar. Jadilah yang pertama!

๐Ÿš€ Partner Recommendation

Butuh Source Code & Aplikasi Premium?

Download aplikasi Laravel, POS, Sekolah, Klinik, ERP, dan source code siap pakai di GudangCode.

GudangCode
  • โœ” Source Code Premium
  • โœ” Sistem Siap Pakai
  • โœ” Lifetime Update
  • โœ” Membership Lifetime
  • โœ” Update Aplikasi Harian
Daftar Membership โ†’