In this tutorial we will learn how to upload multiple images with progress bar in Laravel. A progress bar shows how much time is remaining to upload a file.
When too many files to upload , it takes time to upload on a server. Meanwhile, we can display progress bar so that end user can know how much time is remaining to upload a file.
So in this tutorial we will create file multiple file upload with progress bar.
Step 1 : Add Below Route.
Route::get('image','ImageController@index'); Route::post('multiple_image','ImageController@uploadMultiple');
Step 2 : Create Controller And Add Below Code.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ImageController extends Controller { public function index(){ return view('image'); } public function uploadMultiple(Request $request){ foreach($request->file('image') as $image) { $new_name = rand() . '.' . $image->getClientOriginalExtension(); $image->move(public_path('upload'), $new_name); } $res = array( 'success' => 'Multiple Image File Has Been uploaded Successfully' ); return response()->json($res); } }
Step 3 : Create View And Add Below Code.
<!DOCTYPE html> <html lang="en"> <head> <title>Image Validation In Laravel</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/js/bootstrap.min.js"></script> </head> <body> <h3 class="text-success" align="center">Multiple Image Upload In Laravel</h3><br> <div class="container"> <div class="panel-group"> <div class="panel panel-primary"> <div class="panel-heading">Image Validation In Laravel</div> <form action="{{ url('multiple_image') }}" method="post" enctype="multipart/form-data"> @csrf <div class="panel-body"> <div class="form-group"> <label class="control-label col-sm-2">Select Image:</label> <div class="col-sm-5"> <input type="file" name="image[]" multiple> </div> </div> <br><br> <button class="btn btn-success" type="submit" style='margin-left:20%'>Upload Image</button> </div> <div class="progress"> <div class="progress-bar" aria-valuenow="" aria-valuemin="0" aria-valuemax="100" style="width: 0%"> 0% </div> </div> <div id="success" class="row"></div> </form> </div> </div> </div> <script> $(document).ready(function(){ $('form').ajaxForm({ beforeSend:function(){ $('#success').empty(); $('.progress-bar').text('0%'); $('.progress-bar').css('width', '0%'); }, uploadProgress:function(event, position, total, percentComplete){ $('.progress-bar').text(percentComplete + '0%'); $('.progress-bar').css('width', percentComplete + '0%'); }, success:function(data) { if(data.success) { $('#success').html('<div class="text-success text-center"><b>'+data.success+'</b></div><br /><br />'); $('#success').append(data.image); $('.progress-bar').text('Uploaded'); $('.progress-bar').css('width', '100%'); } } }); }); </script> </body> </html>