Pluginify

Masuk Daftar
Home > Blog > Laravel > Mengenal Storage Public di Laravel: Konsep, Konfigurasi, dan Implementasi

Mengenal Storage Public di Laravel: Konsep, Konfigurasi, dan Implementasi

Mengenal Storage Public di Laravel: Konsep, Konfigurasi, dan Implementasi

Dalam pengembangan aplikasi berbasis Laravel, pengelolaan file menjadi bagian yang penting, terutama ketika berhubungan dengan upload gambar, dokumen, avatar pengguna, maupun aset lainnya. Laravel menyediakan abstraksi filesystem yang kuat melalui fitur Storage, salah satunya Storage Public.

Storage Public merupakan mekanisme penyimpanan file yang memungkinkan file tersebut diakses oleh pengguna melalui URL publik. Fitur ini sangat diperlukan pada aplikasi berbasis web yang membutuhkan akses file dari browser.

Konsep Storage Public di Laravel

Laravel memiliki tiga lapisan utama dalam manajemen filesystem, yaitu:

  1. Drivers — seperti local, public, dan s3.
  2. Disks — konfigurasi filesystem yang menggunakan driver tertentu.
  3. Visibility — apakah file dapat diakses secara publik atau hanya privat.

Secara default, Laravel sudah menyediakan dua disk utama:

  • local → bersifat privat
  • public → bersifat publik melalui URL

Disk public inilah yang digunakan ketika kita ingin file dapat diakses melalui browser.


Lokasi Direktori Storage Public

Secara struktural, lokasi penyimpanan untuk disk public berada di:

storage/app/public/

Namun folder ini tidak otomatis dapat diakses publik. Laravel menyediakan mekanisme symbolic link agar folder tersebut terhubung ke direktori:

public/storage/

Dengan cara ini, file dapat diakses menggunakan URL seperti:

https://domain.com/storage/nama_file.jpg

Konfigurasi Disk "public"

Konfigurasi disk disimpan dalam file:

config/filesystems.php

Pada bagian disks, terdapat konfigurasi bawaan seperti berikut:

'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
],

Penjelasan singkat:

  • driver → menggunakan filesystem lokal
  • root → lokasi penyimpanan
  • url → basis URL untuk akses file
  • visibility → status akses publik

Membuat Symbolic Link

Agar folder storage/app/public dapat diakses oleh browser, perlu dibuat symbolic link. Laravel menyediakan perintah artisan:

php artisan storage:link

Setelah menjalankan perintah tersebut, Laravel akan membuat link di:

public/storage

Jika terjadi kegagalan karena izin (permission), pastikan folder public dan storage memiliki izin yang benar.


Upload File ke Storage Public

File dapat disimpan ke disk public menggunakan metode store() atau storeAs() melalui request upload.

Contoh penggunaan dalam Controller:

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

    $path = $request->file('gambar')->store('gambar-produk', 'public');

    return response()->json([
        'message' => 'Upload berhasil!',
        'path' => $path,
        'url' => asset('storage/'.$path)
    ]);
}

Pada contoh di atas, file yang di-upload akan masuk ke:

storage/app/public/gambar-produk/

Mengakses File Melalui URL Public

Setelah file tersimpan, URL untuk mengaksesnya cukup sederhana:

$url = asset('storage/'.$path);

Jika disisipkan dalam Blade:

<img src="{{ asset('storage/'.$path) }}" alt="Preview">

Cara ini sangat bermanfaat untuk menampilkan avatar, gambar produk, atau dokumen.

Menghapus File dari Storage Public

Laravel juga menyediakan method untuk menghapus file:

use IlluminateSupportFacadesStorage;

Storage::disk('public')->delete($path);

Jika $path adalah gambar-produk/foto.jpg, maka file akan dihapus dari folder storage.

Contoh Menyimpan File dengan Nama Spesifik

Jika ingin mengontrol nama file:

$namaFile = time() . '.' . $request->file('gambar')->extension();

$request->file('gambar')->storeAs('gambar-produk', $namaFile, 'public');

Cara ini umum digunakan saat ingin menghindari duplikasi nama file.


Keamanan dan Pertimbangan

Walaupun bersifat publik, tetap harus diperhatikan aspek keamanan, seperti:

  • Validasi tipe file
  • Validasi ukuran file
  • Validasi sumber input
  • Sanitasi nama file bila perlu

Pengguna tidak boleh bebas mengunggah file berbahaya seperti script .php.

Kesimpulan

Storage Public di Laravel merupakan fitur yang sangat penting dalam pengelolaan aset file berbasis web. Dengan memanfaatkan disk public, pengembang dapat menyimpan file dan memberikan akses publik melalui browser dengan aman dan terstruktur.

Konfigurasi yang mudah, integrasi yang baik dengan Controller, serta dukungan perintah storage:link membuat pengelolaan file menjadi lebih efisien. Dengan mempelajari konsep ini, proses upload, pengaksesan, dan penghapusan file akan lebih mudah diterapkan dalam aplikasi berskala kecil hingga besar.

Baca Juga: Membangun REST API Laravel Secara Profesional

Pluginify
Pluginify