In this article, we will see how to upload multiple images in laravel 9. here, we will see the tutorial of multiple image uploads in laravel 9. upload multiple images in laravel 9 is not a big task if you follow the below steps then you can very easily upload image with validation. And as well as, how to validate image mime type, size, dimension, etc on laravel 9 controller by using laravel validation rules.
So, let's see multiple image upload in laravel 9, laravel 9 multiple image upload, upload multiple images in laravel 9, laravel 9 multiple image uploads with preview, multiple file upload in laravel 9
Step 1 : Install Laravel for Upload Multiple Image in Laravel 9
Step 2 : Add Model and Migration
Step 3 : Create Controller
Step 4 : Create Route
Step 5 : Create Blade File for View Multiple Image Upload in Laravel 9
In this first step, we will install a new laravel app(if required) for example how to upload multiple images in laravel 9.
composer create-project --prefer-dist laravel/laravel blog
Now, we will create a database, model, and migration for multiple image uploads.
php artisan make:model File -m
Now your model has been ready you need to edit like below code in this file location 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, add the below code in the 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 artisan command in your terminal.
php artisan migrate
Now, we will create FileController for multiple image uploads examples, and don't forget to create a "files" folder in your public directory to save your images.
<?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');
}
}
In this step, we will create GET and POST routes for multiple image uploads in laravel.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\FileController;
Route::get('file', [FileController::class, 'create']);
Route::post('file', [FileController::class, 'store']);
Now, we will create an index.blade.php file in this location resources/views/index.blade.php.
<html lang="en">
<head>
<title>How To Upload Multiple Image In Laravel 9 - Websolutionstuff</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 9 - Websolutionstuff</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>
You might also like :
In this article, we will see how to get the current date and time in react js. You can get the current date and tim...
Sep-02-2022
Hello, laravel developers! In this article, we'll see how to update user profiles in laravel 11. Here, we'll cha...
Jul-12-2024
In this tutorial, I’ll show you how to use the @when directive in Laravel 11 to conditionally render content in yo...
Oct-28-2024
In this article, we will see how to create a validation rule in laravel 10. Here, we will learn about the laravel 1...
May-22-2023