Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Uploader Bundle

Uploader Bundle Laravel Package

vich/uploader-bundle

View on GitHub
Deep Wiki
Context7

A simple Symfony bundle to ease file uploads with ORM entities and ODM documents.

Frequently asked questions about Uploader Bundle
Can I use VichUploaderBundle directly in Laravel without Symfony, or is it only for Symfony apps?
VichUploaderBundle is designed for Symfony, but you can adapt it for Laravel by leveraging Doctrine ORM (via `laravel-doctrine/orm`) and abstracting Symfony-specific components like Dependency Injection and events. For Eloquent, you’ll need custom traits or classes to replicate its functionality, as the bundle relies on Symfony’s ORM integration.
How do I install VichUploaderBundle in a Laravel project?
Install via Composer with `composer require vich/uploader-bundle`, then configure it in your Laravel service provider. Since it’s Symfony-based, you’ll need to manually register its services (e.g., the `Uploader`) and adapt its configuration (e.g., YAML to Laravel’s `config()` or `.env`). Doctrine ORM users will face fewer hurdles than Eloquent users.
Does VichUploaderBundle support Laravel’s Storage facade (e.g., S3, GCS) out of the box?
Yes, but indirectly. The bundle supports Flysystem adapters, which Laravel’s Storage facade already integrates with. You’ll need to configure the bundle to use Laravel’s filesystem abstraction (e.g., `public_path()` or `storage_path()`) as its storage directory, then map Flysystem adapters through Laravel’s `Storage` facade for cloud storage.
How do I handle file uploads with Eloquent models if VichUploaderBundle is Symfony-centric?
For Eloquent, create a custom trait (e.g., `UploadableEloquent`) that mimics the bundle’s `Uploadable` interface. Use Laravel’s model observers to handle lifecycle events (e.g., `saved`, `deleted`) for file operations. Store metadata like `path` and `mime_type` in your Eloquent model’s database columns, then manually manage file storage using Laravel’s `Storage` facade.
What Laravel versions and PHP versions does VichUploaderBundle support?
The bundle itself targets Symfony 5.4+ and PHP 7.4+, but Laravel compatibility depends on your setup. If using Doctrine ORM (via `laravel-doctrine/orm`), aim for Laravel 8+ with PHP 8.0+. For Eloquent, ensure your custom adaptation aligns with your Laravel version’s PHP requirements. Always check the bundle’s Symfony dependencies for conflicts.
How do I configure VichUploaderBundle to work with Laravel’s Blade templates instead of Symfony’s Twig?
Replace the bundle’s Twig helpers (e.g., `vich_uploader_asset`) with custom Blade directives or helper functions. For example, create a `VichHelper` facade that generates URLs using Laravel’s `asset()` or `Storage` facade. Configure the bundle’s storage paths to match Laravel’s filesystem structure (e.g., `storage/app/uploads`).
Can I use VichUploaderBundle for high-volume file uploads, or should I look for alternatives?
The bundle handles file uploads efficiently for moderate volumes, but for high traffic, consider offloading file processing to queues (e.g., Laravel Queues) or using dedicated services like Spatie’s `laravel-medialibrary` or `spatie/laravel-uploads`, which are natively Laravel-optimized. VichUploaderBundle’s event system can trigger queue jobs for async operations.
How do I validate file types (e.g., MIME checks) with VichUploaderBundle in Laravel?
Use Laravel’s built-in validation (e.g., `mimes:jpeg,png` in Form Requests) or extend the bundle’s validation logic. For MIME checks, leverage PHP’s `finfo_file()` or libraries like `mime-type`. Configure the bundle’s `mappings` to enforce allowed extensions, and use Laravel’s validation pipeline to reject unauthorized files before processing.
What are the best alternatives to VichUploaderBundle for Laravel file uploads?
For Laravel, consider `spatie/laravel-medialibrary` (flexible, Eloquent-compatible), `spatie/laravel-uploads` (simple, queue-based), or `intervention/image` (image processing). If you need Doctrine ORM support, `laravel-doctrine/orm` + custom traits can replicate Vich’s functionality. Choose based on your ORM (Eloquent vs. Doctrine) and whether you need Symfony’s event-driven workflow.
How do I migrate from manual file uploads (e.g., `move_uploaded_file`) to VichUploaderBundle in Laravel?
Start by replacing manual uploads with the bundle’s `Uploadable` trait (Doctrine) or a custom trait (Eloquent). Update your models to store file metadata (e.g., `path`, `mime_type`) in the database. Use the bundle’s events (or Laravel observers) to handle file deletion on model removal. Test incrementally, replacing one upload handler at a time to avoid breaking changes.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
directorytree/privacy-filter-classifier
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata
splash/openapi