Pluginify

Masuk Daftar
Home > Blog > Laravel > Upload File Laravel Storage (Lengkap & Aman untuk Production)

Upload File Laravel Storage (Lengkap & Aman untuk Production)

Upload File Laravel Storage (Lengkap & Aman untuk Production)

Upload file adalah fitur wajib di hampir semua aplikasi web. Mulai dari upload avatar, gambar artikel, sampai dokumen penting.

Di Laravel, untungnya semua ini sudah disiapkan rapi lewat Laravel Storage.

Di artikel ini kita bakal bahas cara upload file Laravel menggunakan storage dari nol sampai siap production, bukan cuma asal jalan.

Kenapa Pakai Laravel Storage?

Sebelum ngoding, penting tahu dulu kenapa Laravel Storage itu recommended:

✅ Sudah aman (handling path & filename)

✅ Bisa simpan ke local, public, S3, dll

✅ Mudah di-maintain

✅ Support rename otomatis

✅ Lebih rapi daripada move_uploaded_file()

Intinya: lebih clean, aman, dan scalable.

Struktur Folder Storage Laravel

Secara default, Laravel punya folder:

storage/
├── app/
│   ├── public/
│   └── private/
  • storage/app/public → untuk file yang bisa diakses publik
  • storage/app → untuk file private

Agar file bisa diakses dari browser, kita perlu symlink dulu.

Generate Storage Link

Jalankan perintah ini sekali saja:

php artisan storage:link

Setelah itu Laravel akan membuat:

public/storage -> storage/app/public

Tanpa ini, file kamu tidak akan bisa diakses lewat URL.

Form Upload File (Blade)

Contoh form upload sederhana:

<form action="{{ route('upload') }}" method="POST" enctype="multipart/form-data">
    @csrf

    <input type="file" name="image">
    <button type="submit">Upload</button>
</form>

⚠️ Wajib pakai enctype="multipart/form-data"

Kalau lupa, file tidak akan terkirim.

Validasi File Upload Laravel

Jangan pernah upload file tanpa validasi ❌

$request->validate([
    'image' => 'required|image|mimes:jpg,jpeg,png|max:2048',
]);

Artinya:

  • image → hanya file gambar
  • mimes → ekstensi yang diizinkan
  • max → ukuran maksimal (KB)

Ini penting banget buat keamanan.

Upload File ke Storage Laravel

Contoh upload ke folder public/uploads:

$file = $request->file('image');
$path = $file->store('uploads', 'public');

Laravel otomatis:

  • generate nama file unik
  • simpan ke storage/app/public/uploads

Nilai $path biasanya seperti:

uploads/abc123xyz.jpg

Upload dengan Nama File Custom

Kalau mau nama file sendiri:

$filename = time() . '.' . $file->extension();

$path = $file->storeAs(
    'uploads',
    $filename,
    'public'
);

Cocok kalau:

  • mau pakai slug
  • mau konsisten dengan database

Simpan Path ke Database

Biasanya path file disimpan ke database:

Post::create([
    'title' => $request->title,
    'image' => $path,
]);

Di Blade:

<img src="{{ asset('storage/' . $post->image) }}" alt="">

Simple, bersih, dan aman.


Hapus File Lama Saat Update

Ini sering dilupakan ❌

Padahal penting supaya storage tidak penuh.

use Illuminate\Support\Facades\Storage;

if ($post->image) {
    Storage::disk('public')->delete($post->image);
}

Lalu upload file baru seperti biasa.


Upload Multiple File Laravel

Kalau upload banyak file:

<input type="file" name="images[]" multiple>

Controller:

foreach ($request->file('images') as $file) {
    $file->store('uploads', 'public');
}

Best Practice Upload File Laravel

Beberapa tips penting 🔥

✅ Selalu validasi file

✅ Jangan simpan file di folder public langsung

✅ Simpan path, bukan URL, di database

✅ Hapus file lama saat update / delete data

✅ Batasi ukuran file

Kesimpulan

Upload file Laravel dengan storage itu:

  • ✅ Mudah
  • ✅ Aman
  • ✅ Rapi
  • ✅ Siap production

Kalau kamu masih upload pakai cara manual, sekarang saatnya pindah ke Laravel Storage.

Pluginify
Pluginify