- How do I integrate FilePond frontend with this Laravel package?
- Install the FilePond JavaScript library via npm (`npm install filepond`), then configure it to point to your Laravel backend endpoints (e.g., `/filepond/process`). Ensure CSRF protection is enabled in your FilePond instance by setting the `X-CSRF-TOKEN` header. The package auto-registers all required routes, so no manual routing is needed for basic uploads.
- Can I use S3 for temporary file storage instead of local storage?
- No, the package requires local temporary storage for validation and processing by default. However, you can bypass validation by configuring direct S3 uploads, but this removes server-side checks for malicious files. For chunked uploads, AWS S3 multipart is supported, but temp files must still be local for validation.
- What Laravel versions does this package support?
- The package supports Laravel 7 through 13, with branch-specific documentation. Check the `composer.json` or GitHub releases for the exact Laravel version compatibility of the installed version. Upgrading between major Laravel versions may require adjustments due to potential API changes.
- How do I validate uploaded files before they’re stored permanently?
- Use Laravel’s validation rules via `Rule::filepond()` in your `FormRequest` or controller. Global validation rules can be set in the `config/filepond.php` file, while field-specific rules override them. The package validates files against these rules before processing or storing them permanently.
- Does this package support chunked/resumable uploads for large files?
- Yes, the package supports chunked uploads with resumable capabilities. For local storage, it uses chunked file handling, while AWS S3 multipart uploads are supported for cloud storage. Ensure your `php.ini` has sufficient `upload_max_filesize`, `post_max_size`, and `memory_limit` settings for large files (e.g., >100MB).
- How do I clean up expired temporary files automatically?
- Run the `filepond:clear` Artisan command manually or schedule it via Laravel’s task scheduler (e.g., `* * * * * php artisan filepond:clear`). This command removes expired temporary files and directories based on the `temp_file_expiry` setting in the config file.
- Can I integrate this with Spatie Media Library?
- Yes, the package is fully compatible with Spatie’s Media Library. After processing uploads via FilePond, you can use the `filepond` table data to associate files with Media Library models. The package provides hooks and events to bridge FilePond uploads with Media Library storage.
- What are the performance implications for high-volume uploads?
- The package is optimized for memory efficiency, but high-volume uploads (e.g., >1000 files/hour) may require tuning. Monitor `storage/framework/filepond` permissions and consider increasing `max_execution_time` in `php.ini`. For S3, ensure your IAM policies allow the `filepond:clear` command to delete multipart uploads.
- How do I restrict FilePond endpoints to specific user roles?
- Use Laravel’s middleware to protect the auto-registered `/filepond/*` routes. Add middleware like `auth` or custom role checks in your `routes/web.php` or `app/Http/Kernel.php`. Example: `Route::middleware(['auth', 'role:admin'])->group(function () { ... });`.
- Are there alternatives if I don’t want to use FilePond frontend?
- This package is tightly coupled with FilePond’s frontend library, so alternatives like Dropzone.js or custom AJAX uploads would require significant refactoring. For backend-only solutions, consider Laravel’s native `Request::file()` or packages like `intervention/image` for simpler uploads without FilePond’s features.