Modern file upload handler for Livewire 3 with chunked uploads, image previews via Glide, and Spatie Media Library integration.
- Chunked uploads for large files
- Image previews with Glide
- Drag & drop support
- Sortable files (with Sortable.js)
- MIME type & file size validation
- Themeable (CSS classes + icons)
- Spatie Media Library integration
- i18n (English + French)
- Auto-save or manual mode
- PHP 8.4+
- Laravel 12+
- Livewire 3.1+
Uses PHP 8.4 features: asymmetric visibility, enums, typed exceptions.
composer require axn/livewire-upload-handlerAdd to your layout:
<head>
@livewireStyles
@livewireUploadHandlerStyles
</head>
<body>
@livewireScripts
@livewireUploadHandlerScripts
</body># Add livewire-tmp/ to main .gitignore
if ! grep -q "livewire-tmp/" storage/app/.gitignore 2>/dev/null; then
echo "livewire-tmp/" >> storage/app/.gitignore
fi
# Create .gitignore for Glide cache
mkdir -p storage/app/.livewire-upload-handler-glide-cache && \
echo "*" > storage/app/.livewire-upload-handler-glide-cache/.gitignore && \
echo "!.gitignore" >> storage/app/.livewire-upload-handler-glide-cache/.gitignoreSee Installation for details.
Single file upload:
<livewire:upload-handler.item />- Installation - Setup and configuration
- Configuration - All config options
- Basic Usage - Single & multiple uploads
- Media Library - Spatie integration
- Customization - Themes, views, translations
- Advanced Usage - Custom components
- Events - Livewire events reference
- Troubleshooting - Common issues
MIT License - see LICENSE