Multipal File Upload In laravel with Database
How To Upload Multiple Files in Laravel
Handling Multiple File Upload in Laravel
Laravel Multiple Files Upload Tutorial Example From Scratch
1. Create Model
Model Name : PurchaseBill
2. Create Database
Database given Field : Name , User_id, File or Image
3. Create Controller
//Controller
public function add(Request $request)
{
if($request->isMethod('post'))
{
$data = $request->all();
$validatedData = $request->validate
([
'name' => 'required',
'image_path.*' => 'mimes:doc,pdf,docx,zip',
'file.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,pdf,xls,xlsx|max:2048',
]);
if(Auth::guard('admin')->user()->user_type == 'super'){
$user_data_id = Auth::guard('admin')->user()->id;
} else{
$user_data_id = Auth::guard('admin')->user()->id;
}
$gstr_detail = new PurchaseBill();
$gstr_detail->name = $data['name'];
$gstr_detail->user_id = $user_data_id;
$files = $request->file('file');
//upload multipal file one row diffrent name with seprate comma
$i = 0;
if($request->hasfile('file')){
foreach ($files as $file) {
// $name = $file->getClientOriginalName();
//with $i help you save diffrent name file
$name = time() . $i . '.' . $file->getClientOriginalExtension();
//movie file in folder location
$file->move(public_path() . '/uploads/', $name);
$datavk[] = $name;
//save data in database with diffrent name with comma
$gstr_detail->file = implode(",",$datavk);
$i++;
}
}
// $gstr_detail->file = implode(",",$datavk);
if($gstr_detail->save()){
return redirect('/admin/purchase-bill')->with('success','Added successfully');
} else {
return redirect('/admin/purchase-bill')->with('errors',COMMON_ERROR);
}
}
$page = 'sale_bill';
return view('backEnd.dataManagement.purchase.form', compact('page'));
}
Main Method : You can Upload multipal file in a row with seprate
Without any problem
Model Name : PurchaseBill
$gstr_detail = new PurchaseBill();
if($gstr_detail->save())
$gstr_detail->name = $data['name'];
$gstr_detail->user_id = $user_data_id;
$files = $request->file('file');
//upload multipal file one row diffrent name with seprate comma
$i = 0;
if($request->hasfile('file')){
foreach ($files as $file) {
// $name = $file->getClientOriginalName();
//with $i help you save diffrent name file
$name = time() . $i . '.' . $file->getClientOriginalExtension();
//movie file in folder location
$file->move(public_path() . '/uploads/', $name);
$datavk[] = $name;
//save data in database with diffrent name with comma
$gstr_detail->file = implode(",",$datavk);
$i++;
}
}
// $gstr_detail->file = implode(",",$datavk);
if($gstr_detail->save())
Model File
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PurchaseBill extends Model
{
//
protected $fillable = [
'user_id','name','file'
];
}
View File
<form id="example-form" action="" class="" method="post" enctype="multipart/form-data">
@csrf
<div>
<!-- <h3>Profile</h3> -->
<section>
<div>
<label for="name">Purchase Bill Name </label>
<input id="name" name="name" type="text" class="required form-control" value="">
</div><br>
<div class="custom-file">
<input type="file" name="file[]" class="custom-file-input" id="images" multiple="multiple" width="10%" height="10%" accept=".jpg, .png, .gif, .jpeg,
.xlsx, .pdf" >
<label class="custom-file-label" for="images">Choose image</label>
</div>
</section>
<div class="card-body">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button type="submit" name="submit" class="btn btn-primary" style="float: right; margin-bottom: 20px">Upload Images</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="user-image mb-3 text-center">
<div class="imgPreview" style="height:250px; width:250px" > </div>
</div>
</div>
</div>
</form>
<script>
$(function() {
// Multiple images preview with JavaScript
var multiImgPreview = function(input, imgPreviewPlaceholder) {
if (input.files) {
var filesAmount = input.files.length;
for (i = 0; i < filesAmount; i++) {
var reader = new FileReader();
reader.onload = function(event) {
$($.parseHTML('<img style="height:250px; width:250px; diplay:inline block; float:left;" >')).attr('src', event.target.result).appendTo(imgPreviewPlaceholder);
}
reader.readAsDataURL(input.files[i]);
}
}
};
$('#images').on('change', function() {
multiImgPreview(this, 'div.imgPreview');
});
});
</script>
data base
11111 111