| Install | |
|---|---|
composer require risetechapps/media-for-laravel |
|
| Latest Version: | 1.3.3 |
| PHP: | ^8.4 |
| License: | MIT |
| Last Updated: | Mar 19, 2026 |
| Links: | GitHub · Packagist |
O Media For Laravel é um pacote que estende as funcionalidades do spatie/laravel-medialibrary, simplificando o gerenciamento de uploads e arquivos temporários em aplicações Laravel.
Certifique-se de que seu projeto atende aos seguintes requisitos:
composer require risetechapps/media-for-laravel
use Spatie\MediaLibrary\HasMedia;
use RiseTechApps\Media\Traits\HasConversionsMedia\HasConversionsMedia;
use RiseTechApps\Media\Traits\HasPhotoProfile\HasPhotoProfile;
class Client extends Model implements HasMedia
{
use HasFactory, HasUuid;
use HasConversionsMedia, HasPhotoProfile;
}
use Illuminate\Support\Facades\Route;
Media::routes();
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use RiseTechApps\Media\Services\MediaUploadService;
class ClientController extends Controller
{
protected MediaUploadService $mediaUploadService;
public function __construct(MediaUploadService $mediaUploadService)
{
$this->mediaUploadService = $mediaUploadService;
}
public function store(Request $request): JsonResponse
{
try {
$data = $request->all();
$uploads = $request->file('uploads');
$client = Client::create($data);
$this->mediaUploadService->handleUploadsJob($client, $uploads);
return response()->json(['success' => true, 'message' => 'Cliente criado com sucesso!']);
} catch (\Exception $exception) {
return response()->json(['success' => false, 'message' => $exception->getMessage()], 500);
}
}
}
/uploadPOST{
"file": "example.txt",
"collection": "uploads"
}
{
"success": true,
"data": {
"id": "xxxxxxxxx",
"name": "example",
"type": "application/text",
"size": 100,
"preview": "https://preview/xxxxxx",
"collection": "uploads"
}
}
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class ClientsResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'uploads' => $this->getUploads(),
'photo' => $this->getPhotoProfile()?->jsonSerialize(),
];
}
}
Para habilitar S3, configure o seu .env:
FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=seu_id
AWS_SECRET_ACCESS_KEY=sua_chave
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=seu_bucket
Para controlar o prefixo e o disco utilizados pelo pacote, publique e ajuste no arquivo config/media.php:
return [
'disk' => [
'name' => env('MEDIA_DISK', env('FILESYSTEM_DISK', 'local')),
'prefix' => env('STORAGE_PREFIX', ''),
'exclude' => [],
],
];
feature/nova-funcionalidade)Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.
💡 Desenvolvido por Rise Tech