Laravel Tutorial Multiple Upload Files

Hello Laravel lover's, this tutorial will learn how to upload multiple files with validation in laravel. Everyone knows that file upload is an essential aspect of any project, many developer adding file upload to their projects. So this tutorial will discus how to implement laravel file upload functionality with multiple file or image uploading option and also with validation.

0
59

Pada tutorial laravel upload file sebelumnya saya telah membahas bagaimana membuat fitur upload file ke database serta ke folder public storage pada framework Laravel.

Namun, kekurangan dari fitur upload file tersebut adalah kita hanya bisa melakukan upload file secara satu per satu, nah bagaimana jika kita ingin melakukan upload file dalam jumlah banyak sekaligus? oleh karena itu pada tutorial laravel multiple upload file kali ini kita akan bahas membuat fitur upload multiple file dengan framework laravel.

Untuk dapat melakukan upload multiple files pada laravel ada beberapa hal yang perlu kita buat untuk mendukung upload file dalam jumlah banyak sekaligus, yaitu sebagai berikut.

1. Membuat bentuk form menjadi dalam bentuk array.
2. Melakukan validasi berkas atau file secara satu persatu.
3. Memproses data berkas atau file dalam bentuk array secara satu persatu dengan melakukan looping dalam menyimpan data ke database.

Nah diatas adalah poin penting yang perlu kita garis bawahi ketika kita ingin melakukan upload multiple files dengan framework Laravel.

Sehingga secara tahapan step by step dalam membuat fitur upload multiple file pada Laravel kita kupas satu persatu seperti urutan berikut.

Step 1 : Install Laravel Project
Menggunakan framework PHP Laravel semua harus diawali dengan melakukan instalasi framework itu sendiri. Pada Laravel untuk melakukan instalasi dapat dilakukan melalui jendela Terminal/ Command Prompt dengan menjalankan perintah comsposer install seperti berikut.

composer create-project laravel/laravel example-app

Dengan menjalankan perintah composer diatas maka kita akan meng-install framework laravel terbaru pada folder project. Sedangkan jika ingin menginstall framework laravel dalam versi tertentu dapat dilakukan dengan menjalankan perintah install composer seperti berikut.

composer create-project --prefer-dist laravel/laravel example-app"x.*"

Step 2 : Create Database Connection
Menghubungkan project laravel ke database, pada server development atau local server pada PC kita kita. Untuk melakukan koneksi database dapat dilakukan melalui file environment (.env), file ini dapat kita jumpai pada folder root project Laravel.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=your db name
DB_USERNAME=username db
DB_PASSWORD=password db

Pada tahap ini jangan lupa agar membuat satu buah tabel pada database untuk menampung upload multiple files laravel.

CREATE TABLE `multiuploads` ( 
    `id` INT(11) NOT NULL AUTO_INCREMENT , 
    `filename` VARCHAR(250) NOT NULL , 
    `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP , 
    `updated_at` DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , 
    PRIMARY KEY (`id`)) ENGINE = InnoDB;

Step 3 : Create Controller and Model
Menciptakan sebuah controller pada Laravel yang akan kita gunakan untuk mengambil permintaan, memparsing permintaan, menginisialisasi, memanggil model yang dibutuhkan, mengambil respon dan mengirimkannya ke view.

Pada framework Laravel, menciptakan file controller serta file modal dapat kita lakukan dengan menjalankan satu buah perintah artisan melalui jendela Terminal/ Command Prompt. Buka jendela Terminal/ Command Prompt lalu jalankan perintah artisan berikut.

php artisan make:model Multipleuploads -mcr
// Laravel model Multipleuploads 

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Multipleuploads extends Model
{
    protected $table ='multiuploads';
    protected $primaryKey = 'id';
    protected $fillable = array('filename','created_at','updated_at');
}

Step 4 : Setup the routes in web.php file
Pada tahap ini kita akan membuat rute pada project upload multiple files. Route pada laravel digunakan untuk mengatur rute pada project aplikasi laravel.

Untuk membuat rute pada laravel dapat dilakukan dengan menambahkan beberapa baris route pada folder “routes/web.php”. Pada Tutorial Multiple Upload Files dengan laravel disini untuk kebutuhan route adalah seperti berikut.

Route::get('/multipleuploads', 'MultipleuploadsController@index')->name('uploads');
Route::post('/save','MultipleuploadsController@store')->name('uploads.store');

Step 5 : Create Blade File Form_upload.blade
Laravel pada situs resminya telah menerangkan bahwa blade adalah “Blade is the simple, yet powerful templating engine that is included with Laravel. Unlike some PHP templating engines, Blade does not restrict you from using plain PHP code in your templates.”

Untuk kebutuhan multiple upload files laravel buatlah satu buah file blade dan letakkan pada folder “resources/views/multipleuploads.blade.php”.

// multipleuploads.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">{{ __('Upload File or Images') }}</div>

                <div class="card-body">
                    <form method="POST" action="{{ route('uploads.store') }}" enctype="multipart/form-data">
                        @csrf

                        <div class="form-group row">
                            <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('File') }}</label>

                            <div class="col-md-6">
                                <input type="file" class="form-control" name="filename[]" required multiple>
                            </div>
                        </div>

                        <div class="form-group row mb-0">
                            <div class="col-md-6 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    {{ __('Upload') }}
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Perhatikan pada form input field diatas saya menyertakan atribut multiple pada field input seperti berikut.

<input type="file" class="form-control" name="filename[]" required multiple>

Step 6 : Create function Controller
Kebutuhan akan function (method) pada controller tutorial upload multiple files ini adalah pertama dengan menciptakan function index() yang kita gunakan untuk memanggil form atau file blade upload multiple file, seperti berikut.

public function index()
    {
        return view('multipleuploads');
    }

Lalu dilanjutkan dengan menambahkan satu buah function (method) dengan nama store(), dimana pada function inilah kita akan mengolah upload multiple files yang dikirimkan dari form upload, seperti berikut.

public function store(Request $request)
    {
        $request->validate([
            'filename' => 'required',
            'filename.*' => 'mimes:doc,docx,PDF,pdf,jpg,jpeg,png|max:2000'
        ]);
        if ($request->hasfile('filename')) { 
            $files = [];
            foreach ($request->file('filename') as $file) {
                if ($file->isValid()) {
                    $filename = round(microtime(true) * 1000).'-'.str_replace(' ','-',$file->getClientOriginalName());
                    $file->move(public_path('images'), $filename);                    
                    $files[] = [
                        'filename' => $filename,
                    ];
                }
            }
            Multipleuploads::insert($files);            
            echo'Success';
        }else{
            echo'Gagal';
        }
    }

Tahap final adalah melakukan running tes dengan menjalankan laravel server development, buka jendela Terminal/ Command Prompt lalu jalankan perintah artisan berikut.

php artisan serve

Melalui jendela web browser, kita adapat mengakses alamat project dengan menjalankan url localhost:8000/multipleuploads, jika semua berjalan dengan baik maka akan kita jumpai form multiple upload seperti berikut.

Laravel Upload Multiple Files
Laravel Upload Multiple Files

Untuk melakukan upload multiple files, Anda dapat memilih dan menyertakan beberapa file sekaligus pada form multiple upload, jika berjalan dengan baik maka akan dapat kita jumpai beberapa file yang ter-upload ke tabel database serta pada folder public storage seperti contoh berikut.

Laravel Multiple Upload Public Storage
Laravel Multiple Upload Public Storage
Laravel Multiple Upload Tabel Database
Laravel Multiple Upload Tabel Database

Dengan begitu kita telah berhasil membuat fitur upload multiple files dengan Laravel. Akhirnya semoga tutorial ini dapat menambah wawasan serta memberikan manfaat. Terimakasih telah berkunjung di Jogjatech.com and happy coding 🙂

LEAVE A REPLY

Please enter your comment!
Please enter your name here