Rabbi_Gerzi/backend/app/Shared/Files/LaravelFileUploader.php
2026-06-02 10:22:53 +03:00

45 lines
1.1 KiB
PHP

<?php
namespace App\Shared\Files;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class LaravelFileUploader implements FileUploader
{
public function upload(FileToUpload $file, string $folder): string
{
$path = $folder . '/' . Str::random(40) . $this->extensionFor($file);
Storage::disk('public')->put($path, $file->getContents());
return $path;
}
public function url(string $path): string
{
return Storage::disk('public')->url($path);
}
private function extensionFor(FileToUpload $file): string
{
$mimeExtensions = [
'image/jpeg' => '.jpg',
'image/png' => '.png',
'image/webp' => '.webp',
'application/pdf' => '.pdf',
];
if (isset($mimeExtensions[$file->getMimeType()])) {
return $mimeExtensions[$file->getMimeType()];
}
$originalExtension = pathinfo(
$file->getOriginalName(),
PATHINFO_EXTENSION,
);
if ($originalExtension !== '') {
return '.' . $originalExtension;
}
return '';
}
}