iperamuna/filament-chunk-upload
A Filament package for chunked file uploads that splits large files into smaller parts for more reliable transfers. It integrates with Filament form components and Laravel storage, making big uploads easier to handle in admin panels with upload progress.
Architecture fit: iperamuna/filament-chunk-upload is a Filament form component that fills a specific gap: large-file uploads in Filament admin/forms where PHP upload_max_filesize or post_max_size would otherwise block file submission. It fits Laravel/Filament applications that need user-facing uploads for video, audio, archives, or other large assets, especially back-office workflows where Filament is already the UI layer. The package delegates upload protocol handling to rahulhaque/laravel-filepond, so architectural fit depends on accepting FilePond as the upload transport and its temporary-file lifecycle.
Integration feasibility: Feasible for teams already on Filament + Laravel. Installation requires Composer, publishing/migrating the FilePond dependency, and configuring filepond.server.url. Usage is a drop-in form component: ChunkedFileUpload::make('video_file')->chunkSize(...)->directory(...)->visibility(...). The main integration work is not the field itself but surrounding concerns: temporary storage, private-disk serving, authorization, cleanup, proxy/server limits, and test coverage for uploads larger than current limits.
Technical risk: This is a v1.0.0 package with a single listed contributor and a hard dependency on another package. Key risks include unspecified compatibility with Filament/Laravel/PHP version ranges, reliance on bypassing Filament BaseFileUpload validation behavior, and unclear guarantees around temporary-file cleanup and secure dehydration. The validation bypass is useful but should be treated as a fragile integration point during Filament upgrades. Private-disk downloads via streamDownload are directionally correct but require application-level authorization and path-safety review. Chunked uploads reduce PHP upload-limit issues but do not eliminate infrastructure constraints such as reverse-proxy body limits, storage quotas, or object-storage multipart behavior.
Key questions:
filepond.server.url configuration compatible with tenancy, subdirectory deployments, CSRF, and signed/authenticated upload routes?Stack fit: Best suited to Laravel applications using Filament as an internal or customer-facing admin panel, with large media/document uploads and existing private-disk storage patterns. It is less attractive for teams not using Filament, or teams unwilling to adopt FilePond and its temporary upload model.
Migration path: Treat this as an incremental replacement for selected Filament FileUpload fields rather than a wholesale file-upload migration. Start with one low-risk form/resource, keep the native Filament upload as fallback, and compare behavior for validation, dehydration, deletion, and private downloads. If successful, expand to other large-file fields.
Compatibility: Confirm package constraints against the application’s Filament/Laravel/Livewire versions before adoption. Validate the rahulhaque/laravel-filepond migration and published config in staging. Check that the configured FilePond server URL works through the actual deployment topology, including load balancers, proxies, CSRF middleware, auth middleware, and storage disks.
Sequencing: First perform dependency and compatibility review; then configure FilePond server URL and storage disks in staging; next implement one ChunkedFileUpload field with explicit chunk size and visibility; then test uploads above PHP limits, form submission/dehydration, private download authorization, cancellation cleanup, and failure recovery. Roll out behind a feature flag or per-resource scope before broad adoption.
Maintenance: Pin Composer versions and monitor both this package and rahulhaque/laravel-filepond. Because the package is v1.0.0 and single-maintainer, teams should be prepared to own patches or fork if Filament upgrades break the validation bypass or dehydration behavior. Include it in dependency-upgrade reviews, especially Filament major/minor upgrades.
Support: Expect community/README-level support with no commercial SLA. Internal documentation should cover configuration, storage layout, temp-file cleanup, private download routes, and rollback to native Filament uploads. Assign an owner for upload-related operational issues.
Scaling: Chunking reduces per-request memory and upload-limit pressure but increases request volume and temporary storage churn. Validate chunk size against server, proxy, and storage limits. For high-volume deployments, review object-storage compatibility, cleanup jobs, concurrency behavior, and bandwidth costs. Memory-safe private downloads are important, but large-file serving still needs authorization, throttling, and range-request consideration.
Failure modes: Watch for orphaned temporary chunks, failed dehydration after form submit, stale FilePond IDs, validation bypass regressions after Filament upgrades, misconfigured server URL/CSRF, unauthorized private-disk access, filename/path handling issues, proxy body-size limits, and storage quota exhaustion. Define runbooks for cleanup, retry, and support escalation.
Ramp-up: Laravel/Filament developers should ramp up quickly on the component API, but moderate effort is needed to understand FilePond’s temporary-file lifecycle and the package’s dehydration/validation behavior. Provide examples for private-disk streaming downloads, cleanup jobs, and supported file-size/chunk-size policies before enabling it for business-critical uploads.
How can I help you explore Laravel packages today?