FiloraFS
FiloraFS storage
Understand local storage, AWS S3, provider selection, file lifecycle, pre-signed access, and edition limits.
Updated
Provider availability
| Capability | Lite | Pro |
|---|---|---|
| Local storage | Yes | Yes |
| AWS S3 / compatible endpoint | No | Yes |
| Persisted metadata | No | MySQL |
| Pre-signed access | No | Application token or native S3 URL |
| Image thumbnails | No | Yes |
| Maximum multipart size | 50 MB | 50 MB |
Local storage
Lite writes UUID-named files under upload.path and derives metadata from the filesystem. Pro writes under file.upload-dir, saves a FileMetadata row, and generates image thumbnails asynchronously.
- Use an absolute writable directory.
- Mount persistent storage in container deployments.
- Back up files and Pro metadata together.
- Do not assume filesystem storage works across multiple stateless application instances.
AWS S3 (Pro only)
When s3.enabled=true and the S3 client can reach the configured bucket, DelegatingFileService uploads through S3FileService. If S3 is unavailable or the upload fails, the current implementation falls back to local storage.
File lifecycle
- Upload validates size and the configured content-type allowlist.
- Metadata records the stored name/key, original filename, content type, size, provider, uploader, and timestamp in Pro.
- Stream and download resolve the provider from storageType.
- Delete removes the provider object, metadata, and thumbnail path used by the service.
- The current Pro list endpoint returns all metadata and does not paginate or filter by owner.
Pre-signed URLs (Pro only)
POST /file/generate-pre-signed-url accepts a file ID and expiry in seconds. Local files use a random application token stored in MySQL and served through /file/presigned/{token}. S3 files use a native pre-signed GET URL when the presigner is available, with application-token fallback on failure.
Limits and security considerations
- Lite trusts the client-provided upload content type and uses string-based path handling; adapt it before exposing untrusted public uploads.
- Pro's S3 download path currently reads the complete object into memory.
- Pro authentication does not by itself guarantee file ownership; enforce ownership in the service layer for multi-user applications.
- Virus scanning, quotas, pagination, and retention policies are application responsibilities.