Laravel Multiple Image Upload
First way:-
//blade file code for image
<input type="file" name="image[]" multiple class="form-control">
//Product Model code
public function productImages()
{
return $this->hasMany(ProductImage::class, 'product_id', 'id');
}
//controller code
public function store(ProductFormRequest $request)
{
$validateData = $request->validated();
$category = Category::findOrFail($validateData['category_id']);
$product = $category->products()->create([
'category_id'=>$validateData['category_id'],
'name'=>$validateData['name'],
'slug'=>Str::slug($validateData['slug']),
'brand'=>$validateData['brand'],
'small_description'=>$validateData['small_description'],
'description'=>$validateData['description'],
'original_price'=>$validateData['original_price'],
'selling_price'=>$validateData['selling_price'],
'quantity'=>$validateData['quantity'],
'trending'=>$request->trending == true ? '1':'0',
'status'=>$request->status == true ? '1':'0',
'meta_title'=>$validateData['meta_title'],
'meta_keyword'=>$validateData['meta_keyword'],
'meta_description'=>$validateData['meta_description'],
]);
if($request->hasFile('image')){
$uploadPath = 'uploads/products/';
foreach($request->file('image') as $key => $imageFile){
$ext = $imageFile->getClientOriginalExtension();
$fileName = Str::random(10).time().'.'.$ext;
$imageFile->move($uploadPath, $fileName);
$finalImagePathName = $uploadPath.'-'.$fileName;
$product->productImages()->create([
'product_id'=>$product->id,
'image'=>$finalImagePathName,
]);
}
}
return redirect('admin/products')->with('message', 'Product Uploaded');
}
//Another Way:-
public function store(ProductFormRequest $request)
{
$validateData = $request->validated();
$category = Category::findOrFail($validateData['category_id']);
$product = $category->products()->create([
'category_id'=>$validateData['category_id'],
'name'=>$validateData['name'],
'slug'=>Str::slug($validateData['slug']),
'brand'=>$validateData['brand'],
'small_description'=>$validateData['small_description'],
'description'=>$validateData['description'],
'original_price'=>$validateData['original_price'],
'selling_price'=>$validateData['selling_price'],
'quantity'=>$validateData['quantity'],
'trending'=>$request->trending == true ? '1':'0',
'status'=>$request->status == true ? '1':'0',
'meta_title'=>$validateData['meta_title'],
'meta_keyword'=>$validateData['meta_keyword'],
'meta_description'=>$validateData['meta_description'],
]);
if($request->hasFile('image')){
$uploadPath = 'uploads/products/';
foreach($request->file('image') as $key => $imageFile){
$i = 1;
$ext = $imageFile->getClientOriginalExtension();
$fileName = time().$i++.'.'.$ext;
$imageFile->move($uploadPath, $fileName);
$finalImagePathName = $uploadPath.'-'.$fileName;
$product->productImages()->create([
'product_id'=>$product->id,
'image'=>$finalImagePathName,
]);
}
}
return redirect('admin/products')->with('message', 'Product Uploaded');
}
No comments