How to Upload Multiple files in Laravel 5.8

How to multiple image upload in laravel 5.8 from scratch. Today In this tutorial, we will show you how to upload multiple image in laravel 5.8 application step by step simple and easy way.

We will upload multiple images with validate image type in laravel app. we will also validate image with laravel validator and store the images to database and folder.

In this tutorial, We will tell you each things about multiple image upload in laravel 5.8 app. Just follow few steps and upload image in folder laravel 5.8 app .

Contents

  1. Install Laravel 5.8 App
  2. Setup Database
  3. Make Route
  4. Create Controller & Methods
  5. Create Blade View
  6. Make Folder
  7. Start Development Server
  8. Conclusion

1. Install Laravel 5.8 App


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

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

2. Setup Database


After successfully install laravel 5.8 Application, Go to your project .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 table name Image and it’s migration file. use the below command :

php artisan make:model Image -m

It command will create one model name Image and also create one migration file for Image 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 CreateImagesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('images', function (Blueprint $table) {
            $table->increments('id');
            $table->increments('image');
            $table->timestamps();
        });
    }
 
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('images');
    }
}

Next migrate the table using the below command :

php artisan migrate

4. Make Route


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

Route::get('image', 'ImageController@index');
 Route::get('save', 'ImageController@save');

5. Create Controller

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

php artisan make:controller ImageController

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

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use Validator,Redirect,Response,File;
use App\Image;
 
class ImageController extends Controller
{
 
    public function index()
    {
        return view('image');
    }
 
    public function save(Request $request)
    {
 
        request()->validate([
 
            'image' => 'required',
            'image.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
 
        ]);
 
        if ($image = $request->file('image')) {
            foreach ($image as $files) {
            $destinationPath = 'public/image/'; // upload path
            $profileImage = date('YmdHis') . "." . $files->getClientOriginalExtension();
            $files->move($destinationPath, $profileImage);
            $insert[]['image'] = "$profileImage";
            }
        }
       
        $check = Image::insert($insert);
 
        return Redirect::to("image")->withSuccess('Great! Image has been successfully uploaded.');
 
    }
}

6. Create Blade view


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

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <meta name="csrf-token" content="{{ csrf_token() }}">
  <title>Laravel 5.7 Multiple Image Upload Example - Tutsmake.com</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
 
 <style>
    .container{
    padding: 10%;
    text-align: center;
   } 
 
 </style>
</head>
<body>
 
<div class="container">
    <h2 style="margin-left: -48px;">Laravel 5.7 Multiple Image Upload Example - Tutsmake.com</h2>
    <br>
 
    <br>
    @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>
    <br>
    @endif
 
    @if (count($errors) > 0)
 
        <div class="alert alert-danger">
 
            <strong>Opps!</strong> There were something went wrong with your input.
 
            <ul>
 
                @foreach ($errors->all() as $error)
 
                    <li>{{ $error }}</li>
 
                @endforeach
 
            </ul>
 
        </div>
      <br>
    @endif
    <form action="{{ url('save') }}" method="post" accept-charset="utf-8" enctype="multipart/form-data">
      @csrf
    <div class="avatar-upload col-6">
        
        <div class=" form-group avatar-edit">
            <input type='file' id="image" name="image[]" accept=".png, .jpg, .jpeg" />
            <label for="imageUpload"></label>
             
        </div>
 
    </div>
    <div class="form-group col-3">
    <button type="submit" class="btn btn-success">Submit</button>
    </div>
    </form>
</div>
 
</body>
</html>

7. Start Development Server


We need to start 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/image
 Or direct hit in your browser
 http://localhost/ImageUpload/public/image

8. Conclusion


In this tutorial , We have successfully upload multiple image in project folder . We uploaded multiple image in database and folder. Our examples run quickly.

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

About the Author: Rajiv Bikram

"Software is the Hardware of my Life" I am a 23 years old Software Nerd, I love new Technology, software development, writing blogs and share the knowledge with others. I’m studying Master of Computer Information System (MCIS).

You Might Like

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.