Files
back-meditation/app/Traits/HandlesImageUpload.php
T
2026-06-03 12:11:28 +03:30

33 lines
917 B
PHP

<?php
namespace App\Traits;
use App\Models\Image;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
trait HandlesImageUpload
{
/**
* If the request carries an uploaded image file, store it, create an Image
* record for it, and return that record's id. Returns null when no file is
* present so callers can fall back to a provided image_id.
*/
protected function uploadedImageId(Request $request, string $field = 'image'): ?int
{
if (!$request->hasFile($field)) {
return null;
}
$file = $request->file($field);
$ext = $file->getClientOriginalExtension() ?: ($file->guessExtension() ?: 'jpg');
$path = $file->storeAs('images', Str::random(40) . '.' . $ext, 'public');
return Image::create([
'user_id' => auth()->id(),
'path' => $path,
'type' => 'public',
])->id;
}
}