Langsung ke konten utama

Langkah-Langkah Mudah dan Aman untuk Mengunggah File dengan Framework Laravel Tanpa Symlink

Laravel upload adalah proses mengirimkan file dari komputer pengguna ke server web menggunakan framework Laravel. Framework ini menyediakan fitur yang mudah digunakan untuk mengelola file yang diunggah, termasuk validasi file yang diunggah, penyimpanan file di server, dan penanganan kesalahan yang terkait dengan file yang diunggah.

Untuk mengunggah file menggunakan Laravel, kamu dapat membuat formulir HTML untuk memungkinkan pengguna memilih file dan kemudian menangani permintaan pengguna menggunakan kontroler Laravel. Berikut adalah contoh kode sederhana yang dapat kamu gunakan untuk mengunggah file dengan Laravel:

Langkah 1: Membuat Form Upload

Pertama-tama, kita perlu membuat form upload di Laravel. Form upload ini akan memiliki input file, yang akan digunakan untuk memilih file yang akan diupload.

<form method="POST" action="/upload" enctype="multipart/form-data">
    @csrf
    <input type="file" name="file">
    <button type="submit">Upload</button>
</form>

Langkah 2: Menerima dan Validasi File

Kemudian, kita perlu menerima file yang diupload oleh pengguna dan memvalidasi bahwa file tersebut benar-benar merupakan file yang diizinkan. Untuk melakukan ini, kita dapat menggunakan metode validate pada objek Request yang menerima permintaan.

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

    // Lakukan sesuatu dengan file yang diupload
}

Dalam contoh di atas, kami mengizinkan hanya file dengan tipe MIME yang diizinkan (jpeg, png, jpg, gif, svg) dan ukuran file maksimum adalah 2048 kilobita.

Langkah 3: Menyimpan File di Server

Setelah kita validasi file, kita dapat menyimpan file di server menggunakan metode store pada objek UploadedFile. kamu dapat menyimpan file di folder apa saja, namun dalam contoh ini, kita akan menyimpan file di folder public/uploads. 

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

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

    $request->file->storeAs('uploads', $fileName, 'public');

    return response()->json(['message' => 'File berhasil diupload']);
}

Dalam contoh di atas, kita membuat nama file baru dengan menambahkan time() ke nama file yang diupload. Kemudian, kita menggunakan metode storeAs pada objek UploadedFile untuk menyimpan file dengan nama yang baru di folder public/uploads.

Langkah 4: Menampilkan File yang Diupload

Terakhir, kita dapat menampilkan file yang diupload di browser. Untuk melakukan ini, kita dapat membuat rute baru yang mengembalikan file yang diminta. 

Route::get('/uploads/{fileName}', function ($fileName) {
    $path = storage_path('app/public/uploads/' . $fileName);

    if (!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

Dalam contoh di atas, kita membuat rute baru yang mengembalikan file yang diminta dari folder public/uploads. Kita menggunakan fungsi File::exists untuk memeriksa apakah file yang diminta ada atau tidak. Jika file tidak ditemukan, kita mengirimkan respons 404. Jika file ditemukan, kita mengembalikan file dan jenis MIME yang sesuai dalam respons HTTP. 

Penjelasan kode:

Kita membuat rute baru dengan URL /download/{filename} dan menentukan fungsi yang akan dipanggil saat rute diakses.

Dalam fungsi tersebut, kita memeriksa apakah file yang diminta ada atau tidak di dalam folder public/uploads. Jika file tidak ditemukan, kita mengirimkan respons 404.

Jika file ditemukan, kita menggunakan fungsi Storage::get() untuk membaca file dan kemudian menggunakan fungsi Storage::mimeType() untuk mendapatkan jenis MIME dari file tersebut.

Selanjutnya, kita menentukan header respons dengan jenis MIME file yang benar.

Terakhir, kita menggunakan fungsi response()->download() untuk mengirimkan file ke pengguna. Fungsi ini akan menampilkan dialog unduhan di browser pengguna dan mengirimkan file yang diminta.

Untuk mengaktifkan unduhan file, kamu dapat menambahkan tautan unduh ke file yang diupload dalam tampilan kamu, menggunakan URL rute baru ini. Contoh tautan unduh:

<a href="{{ route('file.download', ['filename' => $file->filename]) }}">Download File</a>

Catatan: Pastikan bahwa folder public/uploads memiliki izin yang tepat agar dapat diakses dan ditulis oleh server web kamu. Kamu juga harus menambahkan middleware web ke rute kamu jika kamu belum melakukannya. 

Happy Coding!!!!

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Apa itu index file seperti index.html, index.php kegunaannya dan bagaimana membuat custom nya

Index file adalah file yang berfungsi sebagai halaman utama atau tampilan pertama dari sebuah website. File ini memiliki nama default yang bervariasi, tergantung pada jenis server dan konfigurasinya, namun beberapa nama default yang umum digunakan adalah index.html, index.php, index.jsp, atau index.asp.

Membersihkan cache dan dalvik-cache menggunakan link2sd

Mungkin banyak yang menanyakan kenapa internalnya selalu berkurang free space nya. Padahal tidak menginstall applikasi baru. Hanya melakukan aktifitas normal. Dan sampai pada waktunya, internal memory low dan tidak bisa menambah aplikasi baru lagi.  Ada kemungkinan file cache dari sebuah aplikasi atau dalvik yang dibuat oleh OS android sudah  mulai membengkak. Sehingga perlu di bersihkan secara manual supaya tersedia penyimpanan kosong yang banyak. Sebelum mengetahui cara membersihkan cache dan dalvik cache, kita kupas sekilas apa itu cache dan dalvik cache. Cache adalah sebuah data file sementara yang di hasilkan oleh sebuah applikasi guna mempercepat pemrosesan dimasa yang akan datang (Cache Wikipedia) .  Dalvik-cache adalah ruang kosong sementara yang di pake oleh java virtual machine untuk menjalankan aplikasi android (Dalvik Wikipedia) .