Kami Hadir Membantu Anda Dalam Pengembangan Usaha Anda

Ketapang, Kalimantan Barat elektranetworkvision@gmail.com
Posted On June 21, 2025

Belajar Laravel dari Nol – Part 3: Upload Gambar & Validasi File di Laravel untuk Pemula

elektra_network 0 comments

Mengizinkan pengguna mengunggah gambar adalah fitur dasar tapi kritis dalam banyak aplikasi. Laravel menyediakan dukungan lengkap untuk menangani upload file, menyimpan ke storage, serta melakukan validasi tipe dan ukuran file.


🎯 Tujuan Part 3

  • Membuat form upload gambar di Laravel
  • Menyimpan gambar ke direktori public atau storage
  • Validasi file (ukuran, tipe, wajib/tidak)
  • Menampilkan gambar yang telah diupload

🧰 Studi Kasus: Upload Foto Produk

Setiap produk akan memiliki:

  • nama (string)
  • harga (integer)
  • foto (string / path file)

🔧 1. Update Migration dan Model

a. Migration

Edit file xxxx_create_produks_table.php:

$table->string('foto')->nullable(); // untuk simpan nama file

Jalankan:

php artisan migrate:refresh

b. Model

Tambahkan ke app/Models/Produk.php:

protected $fillable = ['nama', 'harga', 'foto'];

🖥️ 2. Form Upload Gambar

Edit create.blade.php atau edit.blade.php:

<form action="{{ route('produk.store') }}" method="POST" enctype="multipart/form-data">
  @csrf
  <input type="text" name="nama" placeholder="Nama Produk" required>
  <input type="number" name="harga" placeholder="Harga" required>
  
  <input type="file" name="foto" accept="image/*">
  <button type="submit">Simpan</button>
</form>

⚠️ Penting: enctype="multipart/form-data" wajib untuk upload file.


✅ 3. Validasi & Simpan File

Edit method store() di ProdukController.php:

public function store(Request $request)
{
    $request->validate([
        'nama'  => 'required',
        'harga' => 'required|numeric',
        'foto'  => 'nullable|image|mimes:jpeg,png,jpg|max:2048'
    ]);

    $fotoName = null;
    if ($request->hasFile('foto')) {
        $fotoName = time() . '.' . $request->foto->extension();
        $request->foto->move(public_path('uploads/produk'), $fotoName);
    }

    Produk::create([
        'nama' => $request->nama,
        'harga' => $request->harga,
        'foto' => $fotoName
    ]);

    return redirect()->route('produk.index');
}

📸 4. Menampilkan Gambar

Edit index.blade.php:

@foreach($produk as $p)
  <tr>
    <td>{{ $p->nama }}</td>
    <td>{{ $p->harga }}</td>
    <td>
      @if($p->foto)
        <img src="{{ asset('uploads/produk/' . $p->foto) }}" width="80">
      @else
        <small>Tidak ada gambar</small>
      @endif
    </td>
  </tr>
@endforeach

🧠 Tips & Best Practice

AspekRekomendasi
ValidasiSelalu validasi image, mimes, dan max:
Nama file unikGunakan time(), Str::uuid(), atau Hash::make() untuk hindari tabrakan
Folder uploadGunakan folder public/uploads/... untuk akses langsung
Gambar defaultSediakan gambar default jika foto == null
StorageUntuk skala besar, gunakan Storage::disk('s3')->put() dll

☁️ Alternatif Penyimpanan: Laravel Storage

Jika ingin menyimpan gambar di storage/app/public, gunakan:

$request->foto->storeAs('public/produk', $fotoName);

Dan akses dengan:

<img src="{{ asset('storage/produk/' . $p->foto) }}">

Pastikan sudah publish link:

php artisan storage:link

🧰 Elektra Network Vision – Spesialis Media Upload Laravel

Kami bantu Anda:

  • Upload & manajemen file Laravel
  • Integrasi cloud (S3, Google Drive, Wasabi)
  • Kompresi & resize gambar otomatis

🌐 elektranetworkvision.com — Mitra Laravel terbaik untuk performa dan efisiensi.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

Belajar Next.js dari Nol – Part 7: Integrasi Database MongoDB, MySQL & PostgreSQL

Aplikasi web modern tidak bisa lepas dari penyimpanan data. Setelah memiliki sistem autentikasi, kini waktunya…

Aplikasi Web Otomatisasi SEO 2025: Era AI untuk Visibilitas Online

Aplikasi Web Otomatisasi SEO 2025: Era AI untuk Visibilitas Online 🤖 Mengoptimalkan Visibilitas: Aplikasi Web…

Belajar Next.js dari Nol – Part 4: Integrasi API Eksternal & Pengelolaan Data Dinamis

Setelah mempelajari form, validasi, dan state management pada Part 3, kini saatnya memahami salah satu…