Laravel adalah salah satu framework PHP yang sangat populer untuk pengembangan web. Salah satu tugas yang umum dilakukan dalam pengembangan web adalah mengunggah file ke server. Dalam artikel ini, kita akan membahas cara mengunggah file dengan nama unik di Laravel. Hal ini berguna untuk menghindari duplikasi file dan menjaga integritas data. Langkah-langkahnya adalah sebagai berikut:
Langkah 1: Persiapan
Pastikan kita telah menginstal Laravel di server Anda. Jika belum, Anda dapat mengikuti perintah berikut ini:
composer create-project laravel/laravel upload
Sebagai informasi, pada saat artikel ini dibuat saya menggunakan Laravel versi 10. Setelah instalasi projek laravel berhasil, buka folder upload
dengan vscode atau text editor yang lain.
Langkah 2: Membuat Folder penyimpanan dan Symbolic Link
Untuk membuat file yang disimpan dalam disk ‘public’ secara mudah diakses melalui web, kita perlu membuat simbolik link dari folder public/storage
ke folder storage/app/public
. Ini akan memungkinkan file yang disimpan di dalam storage/app/public
dapat diakses melalui URL.
Untuk membuat simbolik link ini, Anda dapat menggunakan perintah php artisan storage:link
melalui terminal di vscode:
php artisan storage:link
Perintah tersebut juga akan membuat sebuah folder “storage
” didalam folder public
.
Langkah 3: Membuat Form Upload
Untuk melakukan pemilihan file, kita buat kode HTML dengan form input untuk upload file dengan menggunakan elemen <input>
dan mengatur atribut enctype="multipart/form-data"
pada formulir agar server dapat mengenali bahwa ini adalah sebuah pengunggahan file.
Secara default, laravel akan mengarahkan kita ke file view welcome.blade.php
ketika kita akses alamat root "/"
.
Lalu ganti seluruh kode didalam file welcome.blade.php
dengan kode berikut kode berikut:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
@csrf
<input type="file" name="file" accept=".jpg, .jpeg, .png, .gif, .pdf">
<button type="submit">Upload File</button>
</form>
</body>
</html>
Untuk membatasi jenis file yang dapat diupload nantinya hanya gambar (seperti JPEG, PNG, GIF) dan file PDF, kita dapat menambahkan atribut accept
pada elemen <input>
dalam form.
Jalankan php artisan serve
, maka akan tampil alamat http://127.0.0.1:8000/ dan tampak seperti berikut:
Langkah 4: Membuat Route
Selanjutnya kita akan membuat route untuk menangai alamat ‘/upload
‘ ketika tombol Upload File
ditekan. Untuk itu, silahkan tambahkan kode berikut di routes/web.php
:
use App\Http\Controllers\FileController;
Route::post('/upload', [FileController::class, 'upload'])->name('upload.file');
Selanjutnya kita akan buat controller dengan nama file FileController.
Langkah 5: Membuat Controller
Selanjutnya, kita buat controller untuk menangani proses upload file. Gunakan perintah berikut untuk membuat controller baru:
php artisan make:controller FileController
Setelah itu, buka file FileController.php
yang baru dibuat dan tambahkan metode upload
untuk menangani upload file:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileController extends Controller
{
public function upload(Request $request)
{
if ($request->hasFile('file')) {
$file = $request->file('file');
$fileName = time() . '_' . $file->getClientOriginalName();
$file->storeAs('public/uploads', $fileName);
return "File berhasil diunggah dengan nama: " . $fileName;
} else {
return "Tidak ada file yang dipilih untuk diunggah.";
}
}
}
Dalam contoh di atas, kita menggabungkan waktu saat ini dengan nama asli file untuk membuat nama file yang unik. Kemudian, kita gunakan metode storeAs
untuk upload file dengan nama yang telah dibuat ke folder “uploads”. Anda dapat mengubah folder tujuan sesuai dengan kebutuhan Anda.
Sekarang, silahkan akses kembali alamat http://127.0.0.1:8000/
dan coba upload sebuah file.
Jika berhasil, maka file akan masuk kedalam folder public/storage/uploads
seperti berikut:
Langkah 5: Memasukkan nama file ke database
Terakhir, kita dapat menyimpan nama file yang terbuat ke database menggunakan teknik CRUD sederhana, anda dapat membaca artikel CRUD laravel.
Semoga artikel Cara Upload File Laravel dengan Nama Unik ini bermanfaat.