| title | Advanced Usage |
|---|---|
| order | 7 |
If you need more control on upload handler component, you can create custom upload handlers by extending components.
Use command php artisan make:upload-handler
Arguments:
name: The name of the upload handler component.
Options:
--single: Generate component for single upload only--force: Overwrite existing files
php artisan make:upload-handler MyUploadHandler
Generated files:
app/
Livewire/
MyUploadHandler/
Concerns/
MyUploadHandlerCommon.php
Group.php
Item.php
resources/
views/
livewire/
my-upload-handler/
group.blade.php
item.blade.php
php artisan make:upload-handler MyUploadHandler --single
app/
Livewire/
MyUploadHandler.php
resources/
views/
livewire/
my-upload-handler.blade.php
use Axn\LivewireUploadHandler\Enums\FileType;
$type = FileType::fromMimeType('image/jpeg');
if ($type->isImage()) {
// Handle image
}
if ($type->supportsPreview()) {
// Generate preview
}Available types: Image, Video, Audio, Document, Archive, Other
Methods:
fromMimeType(string): FileTypeisImage(): boolisVideo(): boolisAudio(): boolisDocument(): boolisArchive(): boolsupportsPreview(): bool
Thrown when required methods not implemented in custom handlers.
use Axn\LivewireUploadHandler\Exceptions\MethodNotImplementedException;
protected function saveUploadedFile(TemporaryUploadedFile $file): void
{
throw MethodNotImplementedException::saveUploadedFile(static::class);
}Factory methods:
saveUploadedFile(string)deleteSavedFile(string)saveFileOrder(string)
Error message guides you to implement the method or use MediaItem/MediaGroup.
Load before @livewireUploadHandlerScripts:
<script src="https://cdn.jsdelivr.net/npm/compressorjs@latest/dist/compressor.min.js"></script>
<script>window.Compressor = Compressor;</script>
@livewireUploadHandlerScriptsConfigure per component:
<livewire:upload-handler.item
:compressorjsSettings="['quality' => 0.8, 'maxWidth' => 1920]"
/>Load before @livewireUploadHandlerScripts:
<script src="https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js"></script>
<script>window.Sortable = Sortable;</script>
@livewireUploadHandlerScriptsEnable on Group:
<livewire:upload-handler.group :sortable="true" />- Troubleshooting - Common issues