Pluginify

Masuk Daftar
Home > Blog > Laravel > Panduan File Upload Laravel untuk Penanganan Berkas

Panduan File Upload Laravel untuk Penanganan Berkas

Panduan File Upload Laravel untuk Penanganan Berkas

File Upload Laravel merupakan bagian penting dalam pengembangan aplikasi modern yang memerlukan pengelolaan berkas seperti foto profil, dokumen, maupun media lain. Laravel menyediakan fungsi bawaan untuk menangani upload file dengan mudah, aman, dan terstruktur tanpa perlu membuat logika manual dari awal. Proses upload ini juga dapat digabungkan dengan validasi untuk memastikan file sesuai format dan ukuran yang diinginkan.

Framework Laravel tidak hanya memfasilitasi proses penyimpanan file, tetapi juga menawarkan integrasi dengan berbagai sistem storage mulai dari direktori lokal hingga cloud seperti Amazon S3. Dengan pendekatan yang fleksibel ini, developer dapat mengatur alur pengunggahan file sesuai kebutuhan bisnis, termasuk mengatur lokasi penyimpanan, penamaan file, serta publikasi akses pada pengguna.

Konsep Dasar File Upload

Untuk mengunggah file, Laravel memanfaatkan Request dan fungsi store(), move(), atau storeAs(). File dikirim melalui form HTML dengan tipe multipart/form-data, sehingga server dapat menerima file selain data teks dari pengguna.

Sebelum menyimpan file, sangat disarankan melakukan validasi untuk memastikan tipe file dan ukuran sesuai kebutuhan.

Form HTML untuk Upload File

Contoh form sederhana pada Blade:

<form action="{{ route('upload.store') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="photo">
    <button type="submit">Upload</button>
</form>

Atribut enctype="multipart/form-data" wajib ada agar file bisa dikirim melalui form.

Validasi File Sebelum Upload

Validasi dapat dilakukan melalui controller:

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

Validasi di atas memastikan bahwa file:

  • Wajib ada (required)
  • Adalah file (file)
  • Bertipe gambar (mimes)
  • Ukurannya tidak lebih dari 2MB (max:2048 dalam KB)

Menyimpan File ke Storage Lokal

Cara menyimpan file menggunakan metode store():

$path = $request->file('photo')->store('photos');

File akan disimpan ke direktori:

storage/app/photos

Jika ingin menampilkan file tersebut secara publik, diperlukan symbolic link.

Membuat Storage Public Link

Agar file dapat diakses dari browser:

php artisan storage:link

Dengan ini, file dari storage/app/public akan tersedia di public/storage.

Untuk upload langsung ke public storage:

$path = $request->file('photo')->store('photos', 'public');

File tersimpan di:

storage/app/public/photos

Dapat ditampilkan di view menggunakan URL:

storage/photos/nama-file.jpg

Mengatur Nama File Sendiri

Jika ingin menentukan nama file, gunakan storeAs():

$filename = time() . '.' . $request->photo->extension();
$request->photo->storeAs('photos', $filename, 'public');

Pendekatan ini memastikan nama file tidak bentrok saat disimpan.

Menyimpan File ke Folder Public

Alternatif manual menggunakan move():

$filename = time() . '.' . $request->photo->extension();
$request->photo->move(public_path('uploads'), $filename);

File kemudian akan tersedia pada:

public/uploads

Metode ini cocok untuk upload yang sifatnya publik.

Menghapus File dari Storage

Untuk menghapus file menggunakan Storage:

use IlluminateSupportFacadesStorage;

Storage::disk('public')->delete('photos/'.$filename);

Ini membantu menjaga storage tetap bersih ketika ada update atau delete data.

Keamanan Upload File

Untuk menghindari eksploitasi atau upload file berbahaya, langkah keamanan berikut wajib diperhatikan:

  1. Validasi tipe file (mimes atau mimetype)
  2. Batasi ukuran file
  3. Simpan file di luar folder public bila memungkinkan
  4. Hindari menampilkan nama file dari input user langsung

Laravel sudah menyediakan fungsi validasi sehingga risiko dapat diminimalkan.

Kesimpulan

File Upload adalah kemampuan penting dalam aplikasi web modern dan Laravel telah menyediakan mekanisme yang aman dan fleksibel untuk menanganinya. Dengan dukungan validasi, penamaan dinamis, symbolic link, serta sistem storage yang terintegrasi, proses pengembangan upload file menjadi lebih efisien, terstruktur, dan aman. Pemahaman mengenai konfigurasi dan metode penyimpanan sangat membantu dalam membangun aplikasi yang profesional dan skalabel.

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

Pluginify
Pluginify