
Hello friends, Today we will show How to Upload Multiple Image in Laravel 8. Sometime we need to upload multiple images in laravel 8 application. In this post we will help you laravel 8 multiple image upload. We will show to you example of upload multiple file in laravel 8.
In this example we will explain step by step laravel 8 multiple images upload. I will share with you simple example of multiple file upload in laravel 8 application. Also you will learn laravel 8 multiple image upload with validation. so let’s following to laravel 8 multiple image upload with preview.
Laravel 8 Multiple Image Upload Example
Now we will start example of laravel 8 multiple images upload. so let’s following my step.
Step 1: Install Laravel for Upload Multiple Image in Laravel 8
In this step we will need to install new laravel application for upload multiple file.
composer create-project --prefer-dist laravel/laravel blog
Step 2: Add Migration and Model
php artisan make:model File -m
app/Models/File.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class File extends Model { use HasFactory; protected $fillable = [ 'filenames' ]; public function setFilenamesAttribute($value) { $this->attributes['filenames'] = json_encode($value); } }
Now, you add the following code in migration file.
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateFilesTable extends Migration { public function up() { Schema::create('files', function (Blueprint $table) { $table->id(); $table->string('filenames'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('files'); } }
Now, run migration with php artisan command in your terminal.
php artisan migrate
Step 3: Create Controller
Now, we will create FileController for multiple file upload example, and don’t forgot to create “files” folder in your public directory to save your images.
app/Http/Controllers/FileController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\File; class FileController extends Controller { public function create() { return view('index'); } public function store(Request $request) { $this->validate($request, [ 'filenames' => 'required', 'filenames.*' => 'image' ]); $files = []; if($request->hasfile('filenames')) { foreach($request->file('filenames') as $file) { $name = time().rand(1,50).'.'.$file->extension(); $file->move(public_path('files'), $name); $files[] = $name; } } $file= new File(); $file->filenames = $files; $file->save(); return back()->with('success', 'Images are successfully uploaded'); } }
Step 4: Create Route
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\FileController; Route::get('file', [FileController::class, 'create']); Route::post('file', [FileController::class, 'store']);
Step 5: Create Blade File for View Multiple Image Upload in Laravel
<html lang="en"> <head> <title>How to Upload Multiple Image in Laravel 8 - web-tuts.com</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> </head> <body> <div class="container lst"> @if (count($errors) > 0) <div class="alert alert-danger"> <strong>Error!</strong> something went wrong <br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif @if(session('success')) <div class="alert alert-success"> {{ session('success') }} </div> @endif <h3 class="well">How to Upload Multiple Image in Laravel 8 - websolutionstuff.com</h3> <form method="post" action="{{url('file')}}" enctype="multipart/form-data"> @csrf <div class="input-group demo control-group lst increment" > <input type="file" name="filenames[]" class="myfrm form-control"> <div class="input-group-btn"> <button class="btn btn-success" type="button">Add</button> </div> </div> <div class="clone hide"> <div class="demo control-group lst input-group" style="margin-top:10px"> <input type="file" name="filenames[]" class="myfrm form-control"> <div class="input-group-btn"> <button class="btn btn-danger" type="button">Remove</button> </div> </div> </div> <button type="submit" class="btn btn-success" style="margin-top:10px">Submit</button> </form> </div> <script type="text/javascript"> $(document).ready(function() { $(".btn-success").click(function(){ var lsthmtl = $(".clone").html(); $(".increment").after(lsthmtl); }); $("body").on("click",".btn-danger",function(){ $(this).parents(".demo").remove(); }); }); </script> </body> </html>
I hope you understand of Laravel 8 Multiple Image Upload and it can help you…