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

5 Ide Usaha Aplikasi Web di 2025: Dari Niche ke Profit

๐Ÿ’ก Dari Ide ke Profit: 5 Konsep Aplikasi Web untuk Merintis Usaha di Indonesia 2025…

Mengenal Komputasi Kuantum: Teknologi Disruptif Masa Depan di 2025

โš›๏ธ Komputasi Kuantum: Teknologi Disruptif yang Akan Mengubah Dunia Digital Komputasi kuantum (quantum computing) dulu…

๐Ÿ“ง Belajar Laravel dari Nol โ€“ Part 8: Konfirmasi Email Otomatis (Email Verification) di Laravel

Laravel menyediakan fitur email verification bawaan yang aman dan fleksibel. Proses ini membantu memastikan bahwa…