validateImage($file); $extension = $file->getClientOriginalExtension(); $filename = Str::ulid() . '.' . $extension; $path = trim($directory, '/'); if ($organisationId) { $path .= '/' . $organisationId; } Storage::disk('public')->putFileAs($path, $file, $filename); return Storage::disk('public')->url($path . '/' . $filename); } public function deleteByUrl(string $url): void { $baseUrl = Storage::disk('public')->url(''); $path = str_replace($baseUrl, '', $url); if ($path && Storage::disk('public')->exists($path)) { Storage::disk('public')->delete($path); } } private function validateImage(UploadedFile $file): void { if (!in_array($file->getMimeType(), self::ALLOWED_IMAGE_MIMES, true)) { throw new \DomainException( 'Alleen JPG, PNG, WebP, SVG of GIF bestanden zijn toegestaan.' ); } if ($file->getSize() / 1024 > self::MAX_IMAGE_SIZE_KB) { throw new \DomainException( 'Bestand is te groot. Maximum: 5MB.' ); } } }