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

Belajar Laravel dari Nol: Panduan Lengkap untuk Pemula

Laravel adalah framework PHP open-source yang dirancang untuk membangun aplikasi web dengan sintaks elegan dan…

Kapan Outsourcing Developer Tepat untuk Perusahaan Anda di 2025?

Kapan Outsourcing Developer Tepat untuk Perusahaan Anda ๐Ÿค Kapan Sebaiknya Perusahaan Anda Memilih Outsourcing Developer:…

Panduan Lengkap Integrasi Database Sinkron Laravel 2025

๐Ÿ”— Panduan Lengkap Integrasi Database Sinkron di Laravel 2025: Memastikan Konsistensi Data Real-time Di tahun…