| Problem | Solution | Impact |
|---|---|---|
| Multi-step form uploads using JSON + multipart risk data loss and concurrency issues. | Temporary storage + Redis metadata (file_id, path, TTL); finalize to permanent storage on submit. | Reliable multi-step uploads, concurrent-safe, simple integration with existing forms. |
Key points:
- Temporary files stored under
/tmp/uploads/<user_id>with TTL - Metadata in Redis allows validation and concurrent workflows
- Finalization uploads file to permanent storage (e.g., GCS) and cleans temp data
Frontend needed to upload user files in multi-step forms using:
- JSON requests for form data
- multipart/form-data for files
Challenges:
- prevent data loss
- support concurrent multi-request uploads
- validate before final submission
- Add temporary backend storage (
/tmp/uploads/<user_id>) - Store metadata in Redis (file_id, path, MIME, TTL, user_id)
- Flow:
- User selects file → POST
/files/temp(multipart/form-data) - File saved locally + metadata in Redis
- Final form submit → backend validates file, uploads to permanent storage (GCS), deletes temp file
- User selects file → POST
- Reliable multi-step uploads
- Supports concurrent users
- Simple integration with existing forms
- Temporary storage + metadata system is simple and reliable
- Decouples file handling from form submission
- Allows safe multi-request workflows
