Create app/Traits/ImageUploadTrait.php
<?php
namespace App\Traits;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
trait ImageUploadTrait
{
public function uploadImage(Request $request, $inputName, $path)
{
if ($request->hasFile($inputName)) {
$image = $request->{$inputName};
$ext = $image->getClientOriginalExtension();
$imageName = 'media_' . uniqid() . '.' . $ext;
$image->move(public_path($path), $imageName);
return $path . '/' . $imageName;
}
}
public function uploadMultipleImages(Request $request, $inputName, $path)
{
$imagePaths = [];
if ($request->hasFile($inputName)) {
$images = $request->{$inputName};
foreach ($images as $image) {
$ext = $image->getClientOriginalExtension();
$imageName = 'media_' . uniqid() . '.' . $ext;
$image->move(public_path($path), $imageName);
$imagePaths[] = $path . '/' . $imageName;
}
return $imagePaths;
}
}
public function updateImage(Request $request, $inputName, $path, $oldPath = null)
{
if ($request->hasFile($inputName)) {
if (File::exists(public_path($oldPath))) {
File::delete(public_path($oldPath));
}
$image = $request->{$inputName};
$ext = $image->getClientOriginalExtension();
$imageName = 'media_' . uniqid() . '.' . $ext;
$image->move(public_path($path), $imageName);
return $path . '/' . $imageName;
}
}
public function deleteImage(string $path)
{
if (File::exists(public_path($path))) {
File::delete(public_path($path));
}
}
}