sherwinchia/livewire-image-uploader
storage/app/public) and Livewire’s property binding.ImageUploader), reducing boilerplate for image handling in components..jpg, .png), requiring manual checks in the parent component.intervention/image).filesystem.php) is required..php files). Requires manual validation in the parent component.filesystem.php configured for the target storage (local/S3)?intervention/image or similar?spatie/laravel-medialibrary).filesystem.php for target storage (local/S3).composer require sherwinchia/livewire-image-uploader
<livewire:image-uploader name="avatar" multiple size="2048">
use Sherwinchia\LivewireImageUploader\Http\Traits\ImageUploader;
public $avatar = [];
rules() or validate():
public function rules() {
return [
'avatar.*' => 'image|mimes:jpeg,png|max:2048',
];
}
public disk is linked (for local storage):
php artisan storage:link
filesystem.php and use the public disk.| Feature | Compatibility Notes |
|---|---|
| Livewire 2.0 | Required; no backward compatibility with v1.x. |
| Laravel 8+ | Assumes newer Laravel features (e.g., model binding). |
| Blade Templates | Native support. |
| Inertia.js | Needs wrapper component to expose Livewire props/events. |
| File Validation | Manual; no built-in MIME/type checks. |
| S3/Cloud Storage | Supported via Laravel’s filesystem, but no S3-specific optimizations. |
laravel-queue) for background processing.upload_max_filesize, post_max_size).| Scenario | Impact | Mitigation Strategy |
|---|---|---|
| Livewire update breaks | Uploads fail silently. | Test against Livewire minor updates; fork if necessary. |
| Malicious uploads | Security vulnerabilities. | Add manual validation (e.g., mimes, max). |
| Disk full (local storage) | Uploads fail with errors. | Set up monitoring (e.g., Laravel Horizon) and alerts. |
| Network failures | Partial uploads. | Implement retry logic in the parent component. |
| PHP memory limits | Uploads time out. | Increase memory_limit or use chunked uploads. |
| S3 misconfiguration | Uploads fail silently. | Validate S3 credentials and bucket permissions. |
$emit, $listen).How can I help you explore Laravel packages today?