Kami Hadir Membantu Anda Dalam Pengembangan Usaha Anda

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

🧹 Belajar Laravel dari Nol – Part 4: Update & Delete Foto Sekaligus Menghapus File di Storage

elektra_network 0 comments

Mengganti foto produk atau menghapus data harus disertai dengan penghapusan file gambar di storage, agar storage server tidak penuh oleh file sampah. Laravel menyediakan cara efisien untuk melakukan ini melalui helper File atau Storage.


🎯 Tujuan Part 4

  • Menangani update gambar produk + hapus file lama
  • Hapus gambar dari server saat data dihapus
  • Gunakan Storage atau File Laravel dengan aman
  • Hindari penumpukan file tak terpakai

📁 Struktur Penyimpanan File

Di part sebelumnya kita menyimpan foto ke:

/public/uploads/produk/

Contoh path hasil upload:

public/uploads/produk/1718545800.jpg

🔄 1. Update Produk dengan Ganti Gambar

Edit update() di ProdukController.php:

use Illuminate\Support\Facades\File;

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

    $produk = Produk::findOrFail($id);

    $fotoLama = $produk->foto;

    // Jika ada foto baru diunggah
    if ($request->hasFile('foto')) {
        // Hapus file lama jika ada
        if ($fotoLama && File::exists(public_path('uploads/produk/' . $fotoLama))) {
            File::delete(public_path('uploads/produk/' . $fotoLama));
        }

        // Simpan file baru
        $fotoBaru = time() . '.' . $request->foto->extension();
        $request->foto->move(public_path('uploads/produk'), $fotoBaru);
        $produk->foto = $fotoBaru;
    }

    // Update data lainnya
    $produk->nama = $request->nama;
    $produk->harga = $request->harga;
    $produk->save();

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

🗑️ 2. Hapus Produk & File Gambar

Edit destroy() di ProdukController.php:

public function destroy($id)
{
    $produk = Produk::findOrFail($id);

    // Hapus file gambar jika ada
    if ($produk->foto && File::exists(public_path('uploads/produk/' . $produk->foto))) {
        File::delete(public_path('uploads/produk/' . $produk->foto));
    }

    $produk->delete();

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

🔐 Keamanan: Cek Eksistensi File

Pastikan selalu gunakan:

File::exists(path) && File::delete(path)

Agar tidak muncul error jika file sudah tidak ada atau pernah dipindahkan.


📦 Alternatif: Gunakan Storage Laravel

Jika kamu menggunakan Laravel Storage:

use Illuminate\Support\Facades\Storage;

Storage::delete('public/produk/' . $produk->foto);

Tentu pastikan kamu menyimpan foto dengan:

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

🧠 Best Practice

HalRekomendasi
Nama file unikGunakan time(), UUID, atau Str::random()
Hindari overwrite fileJangan simpan dengan nama yang sama kecuali dibutuhkan
Validasi ekstensi dan sizeBatasi mimes:jpg,png dan max:2048
Soft deleteGunakan jika ingin backup sebelum file benar-benar dihapus (optional)

🧰 Elektra Network Vision – Konsultan Laravel & File Manajemen

Kami bantu Anda:

  • Sistem manajemen file Laravel (upload, update, delete)
  • Integrasi penyimpanan cloud (Amazon S3, Wasabi)
  • Otomasi pembersihan storage file tidak terpakai

🌐 elektranetworkvision.com — Spesialis sistem Laravel profesional, cocok untuk UMKM hingga enterprise.

Leave a Reply

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

Related Post

Panduan Micro-Frontend 2025: Arsitektur Web Modern untuk Skalabilitas

🏗️ Micro-Frontend: Arsitektur Web Modern untuk Skalabilitas Tim & Proyek di 2025 Di dunia pengembangan…

Belajar Next.js dari Nol – Part 9: Upload File, Gambar & Manajemen Media

Hampir semua aplikasi web saat ini—baik CMS, e-commerce, hingga aplikasi admin—membutuhkan fitur upload file. Pada…

Progressive Web App (PWA): Masa Depan Pengembangan Web

🌐 Progressive Web App (PWA): Masa Depan Pengembangan Web untuk UMKM dan Startup di 2025…