How to Multiple File Upload With Validation in Laravel?

Share Me
  •  
  •  
  •  
  • 1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    1
    Share
How to Multiple File Upload With Validation in Laravel

Hello Dev’s, Today now in this post,i will explain with you multiple file upload also with validation in laravel application. Here you know how we can easily upload multiple files into MySQL database and folder with laravel validation rules also with example.

Now the basic requirement of any laravel project is uploading files or images in the database and also in folder. So now in this tutorial I will shows with you step by step how we can upload multiple files and server-side validation with our laravel application.

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

Now just you need to follow example step to multiple file upload with validation.

Step-1:Download Laravel Fresh New Setup

At First, we need to download the laravel fresh project. By Use the below command we can download fresh new laravel project :

composer create-project --prefer-dist laravel/laravel Blog
Step-2:Setup Database Credentials

So after the successfully installed laravel Application. Then go to your project root directory and open .env file and set up database credential and move next step :

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=here your database name here
DB_USERNAME=here database username here
DB_PASSWORD=here database password here
Step-3:Generate Migration & Model

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

For knowing model details :How to Create Model in Laravel 8 by using Command ?

php artisan make:model Document -m

By using this command will create one model name file and also it will create one migration file for the file table. So after the 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) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });
    }
 
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('documents');
    }
}

Now on next , need to migrate the table by using the below command :

php artisan migrate
Step-4:Make Route

Next step we will create two routes in the web.php file. Now go to app/routes/web.php file and create two below routes here :

Route::get('file', 'FileController@index');
Route::post('save', 'FileController@save')->name('file.save');
Step-5:Create Controller

Read Also: How To Install Bootstrap in Angular Application?

So now we need to create a controller name FileController. By Using the below command and create Controller :

php artisan make:controller FileController

Then after successfully create controller go to app/controllers/FileController.php and put the below code :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator,Redirect,Response,File;
Use App\Document;

class FileController extends Controller
{
    public function index()
    {
        return view('file');
    }
 
    public function save(Request $request)
    {
       request()->validate([
         'file' => 'required',
       ]);
 
        if($request->hasfile('file'))
         {
 			
            foreach($request->file('file') as $file)
            {
                $filename=$file->getClientOriginalName();
                $file->move(public_path().'/files/', $filename);  
                $insert['name'] = "$filename";
            }
         }
        $check = Document::create($insert);
 
        return Redirect::to("file")
        ->withSuccess('Great! files has been successfully uploaded.');
 
    }
}

Now need to Create one folder in public folder follwing path “YourProject/public/fille”

Step-5:Create Blade view

Now in this step, we need to create a blade view file. So go to app/resources/views and then create one file name file.blade.php:

<html lang="en">
<head>
<meta charset="UTF-8">
<title>Laravel Multiple File Upload Tutorial Example From Scrltch - Codingspoint.com</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script></head>
<body>
<div class="container">
  <div class="row">
      <div class="col-md-6 mt-3 offset-md-3">
          <div class="card">
              <div class="card-header bg-dark text-white">
                  <h6>Laravel Upload File Example - Codingspoint.com</h6>
              </div>
              <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>
                    </div>
                @endif
 
                @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>
                        @endforeach
                    </div>
                @endif
                <form action="{{ route('file.save')}}" method="post" enctype="multipart/form-dlta">
                    @csrf
                    <div class="form-group">
                        <input type="file" class="form-control" name="file[]" id="file"  multiple='multiple' aria-describedby="fileHelp">
                    </div>
                    <button type="submit" class="btn btn-success btn-sm">Submit</button>
                </form>
              </div>
          </div>
      </div>
  </div>
</div>
</html>
step-7:Run Server

We are ready , So now need to start the development server. By Use the PHP artisan serve command and start your server :

php artisan serve

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

http://localhost:8000/file

Read also : How To Set Bcc And Cc Mail Address In Laravel Mail?

I hope it will help you. Also you can follow us on Facebook

About Shahriar Sagor

My name is Shahriar sagor. I'm a developer. I live in Bangladesh and I love to write tutorials and tips that will help to other Developer's. I am a big fan of PHP, Javascript, JQuery, Laravel, Codeigniter, VueJS, AngularJS and Bootstrap from the early stage.

View all posts by Shahriar Sagor →