In this tutorial, we will learn Laravel 7 Multiple Image Upload Example
In this section, We will be upload multiple file and store on the server then we will store database too.
We will create a "files" table using laravel migration and write code for the route, controller, and view step by step.
So here you have to just follow the below steps to create Laravel 7 multiple File Upload with Validation Example.
Step 1:
Download Laravel 7
composer create-project --prefer-dist laravel/laravel blog
Step 2:
Add Migration and Model
php artisan make:migration create_files_table
Migration:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateFormsTable extends Migration
{
public function up()
{
Schema::create('files', function (Blueprint $table) {
$table->increments('id');
$table->string('filenames');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('files');
}
}
php artisan migrate
create File model by using following command:
php artisan make:model File
Step 3:
Create Routes routes/web.php
Route::get('file','FileController@create');
Route::post('file','FileController@store');
Step 4:
Create Controller app/Http/Controllers/FileController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileController extends Controller
{
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('create');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'filenames' => 'required',
'filenames.*' => 'mimes:doc,pdf,docx,zip'
]);
if($request->hasfile('filenames'))
{
foreach($request->file('filenames') as $file)
{
$name = time().'.'.$file->extension();
$file->move(public_path().'/files/', $name);
$data[] = $name;
}
}
$file= new File();
$file->filenames=json_encode($data);
$file->save();
return back()->with('success', 'Data Your files has been successfully added');
}
}
Step 5:
Create Blade File resources/views/create.blade.php
<html lang="en">
<head>
<title>Laravel 7 Multiple File Upload Example</title>
<script src="jquery/1.9.1/jquery.js"></script>
<link rel="stylesheet" href="3.3.6/css/bootstrap.min.css">
</head>
<body>
<div class="container lst">
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Sorry!</strong> There were more problems with your HTML input.<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">Laravel 7 Multiple File Upload</h3>
<form method="post" action="{{url('file')}}" enctype="multipart/form-data">
{{csrf_field()}}
<div class="input-group hdtuto 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"><i class="fldemo glyphicon glyphicon-plus"></i>Add</button>
</div>
</div>
<div class="clone hide">
<div class="hdtuto 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"><i class="fldemo glyphicon glyphicon-remove"></i> 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(".hdtuto control-group lst").remove();
});
});
</script>
</body>
</html>
May this example help you.