Cara Upload File Laravel dengan Nama Unik

Posted on

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:

Cara Upload File Laravel dengan Nama Unik


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.

Cara Upload File Laravel dengan Nama Unik

Jika berhasil, maka file akan masuk kedalam folder public/storage/uploads seperti berikut:

Cara Upload File Laravel dengan Nama Unik


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.