Laravel 6 Multiple File Upload With Validation Example

Laravel 6 multiple file upload with validation example tutorial. This tutorial explains to you, 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.

Laravel 6 Multiple File Upload with Validation Tutorial

Just follow the below steps and you can easily upload multiple files with validation in laravel application:

  • Download Laravel Fresh New Setup
  • Setup Database Credentials
  • Generate Migration & Model
  • Make Route
  • Create Controller & Methods
  • Create Blade View
  • Make Folder
  • Run Development Server
  • Conclusion

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

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_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

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 document -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 :

<?php

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');
    }
}

Next, migrate the table using the below command :

php artisan migrate

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::get('save', '[email protected]');

5). Create Controller

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

php artisan make:controller FileController

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()->validate([
         'file' => 'required',
         'file.*' => 'mimes:doc,pdf,docx,txt,zip'
       ]);

        if($request->hasfile('file'))
         {

            foreach($request->file('file') as $file)
            {
                $filename=$file->getClientOriginalName();
                $file->move(public_path().'/files/', $name);  
                $insert['file'] = "$filename";
            }
         }
        
        $check = Document::insertGetId($insert);

        return Redirect::to("file")
        ->withSuccess('Great! files has been successfully uploaded.');

    }
}

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 file.blade.php :

<html lang="en" class="">
<head>
<meta charset="UTF-8">
<title>Laravel Multiple File Upload Tutorial Example From Scratch</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
</head>
<body>
<div class="container">
  <div class="row justify-content-center">
    <div class="card">
	   <div class="card-header">Laravel Upload File Example</div>

	     <div class="card-body">
	        @if ($message = Session::get('success'))

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

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

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

	            </div>
	        @endif

	        @if (count($errors) > 0)
	            <div class="alert alert-danger">
	                <strong>Whoops!</strong> There were some problems with your input.<br><br>
	                <ul>
	                    @foreach ($errors->all() as $error)
	                        <li>{{ $error }}</li>
	                    @endforeach
	                </ul>
	            </div>
	        @endif

	        <form action="/file" method="post" enctype="multipart/form-data">
	            @csrf
	            <div class="form-group">
	                <input type="file" class="form-control-file" name="file[]" id="file" aria-describedby="fileHelp">
	              
	            </div>
	            <button type="submit" class="btn btn-primary">Submit</button>
	        </form>

	     </div>
     </div>
  </div>
</div>
</html>

7). Run Development Server

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

 php artisan serve
If you want to run the project diffrent port so use this below command
php artisan serve --port=8080

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

 http://localhost:8000/file

Conclusion

In this tutorial, We have successfully uploaded multiple files in folder and MySQL database with laravel application. Our examples run quickly.

If you have any questions or thoughts to share, use the comment form below to reach us.

One Comment

  1. Tulsiram Marasini said:

    Very Nice tutorial , Keep giving like this

    September 12, 2019
    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *