Laravel 7 - Multiple File Upload With Validation

Admin   Laravel   489  2021-03-16 04:00:06

Hi Guys,

In this tutorial,i will explain multiple file upload with validation in laravel 7. how you can easily upload multiple files into MySQL database and folder with laravel validation rules with example.

The basic requirement of any laravel project is uploading files or images in the database and folder. This tutorial shows you step by step how you can upload multiple files and server-side validation with your laravel application.

Before uploading multiple files, we will validate files or file types in the laravel application. validate the file with laravel validator and then store the file to the database and folder.

you can following example step to multiple file upload with validation.

Step-1:Download Laravel Fresh New Setup

First, we need to download the laravel fresh setup. Use the below command and download fresh new laravel setup :


composer create-project --prefer-dist laravel/laravel Blog

Step-2:Setup Database Credentials

After successfully installed laravel Application, Go to your project root directory and open .env file and set up database credential and move next step :





DB_DATABASE=here your database name here

DB_USERNAME=here database username here

DB_PASSWORD=here database password here

Step-3:Generate Migration & Model

Now we will create a table named documents and it’s migration file. use the below command :


php artisan make:model File -m

Its command will create one model name file and also create one migration file for the file table. After successfully run the command go to database/migrations file and put the below here :



use Illuminate\Support\Facades\Schema;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Database\Migrations\Migration;

class CreatedocumentsTable extends Migration



* Run the migrations.


* @return void


public function up()


Schema::create('files', function (Blueprint $table) {







* Reverse the migrations.


* @return void


public function down()





Next, migrate the table using the below command :


php artisan migrate

After add following code for a model fille:




namespace App;

use Illuminate\Database\Eloquent\Model;

class File extends Model



* The attributes that are mass assignable.


* @var array


protected $fillable = [




Step-4:Make Route

We will create two routes in the web.php file. Go to app/routes/web.php file and create two below routes here :


Route::get('file', '[email protected]');

Route::post('save', '[email protected]')->name('');

Step-5:Create Controller

We need to create a controller name MultipleFileController. Use the below command and create Controller :


php artisan make:controller MultipleFileController

After successfully create controller go to app/controllers/MultipleFileController.php and put the below code :



namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\File;

class MultipleFileController extends Controller


public function index()


return view('multiplefile');


public function save(Request $request)



'file' => 'required',




foreach($request->file('file') as $file)



$file->move(public_path().'/upload/', $filename);

$insert['file'] = "$filename";




return back()->withSuccess('Great! files has been successfully uploaded.');



Next Create one folder in public folder follwing path "YourProject/public/upload"

Step-6:Create Blade view

In this step, we need to create a blade view file. Go to app/resources/views and create one file name multiplefile.blade.php:


<html lang="en">


<meta charset="UTF-8">

<title>Laravel 7 - Multiple File Upload With Validation - </title>

<link rel="stylesheet" href="" target="_blank" rel="nofollow" >

<script src=""></script>

<script src=""></script>

<script src=""></script></head>

<body class="bg-dark">

<div class="container">

<div class="row">

<div class="col-md-6 mt-3 offset-md-3">

<div class="card">

<div class="card-header">

<h6>Laravel 7 - Multiple File Upload With Validation - </h6>


<div class="card-body">

@if ($message = Session::get('success'))

<div class="alert alert-success alert-block alert-dismissible">

<button type="button" class="close" dlta-dismiss="alert">×</button>

<strong>{{ $message }}</strong>



@if (count($errors) > 0)

<div class="alert alert-danger alert-dismissible">

<button type="button" class="close" dlta-dismiss="alert">×</button>

@foreach ($errors->all() as $error)

{{ $error }}<br>




<form action="{{ route('')}}" method="post" enctype="multipart/form-data">


<div class="form-group">

<input type="file" class="form-control" name="file[]" id="file" multiple='multiple' aria-describedby="fileHelp">


<button type="submit" class="btn btn-success btn-sm">Submit</button>








step-7:Run Server

We need to start the development server. Use the PHP artisan serve command and start your server :


php artisan serve

Now we are ready to run our example so run bellow command to quick run.



It will help you....