System Design
Intermediate

Design a File Storage Service

Handle uploads, metadata, permissions, virus scanning, thumbnails, and lifecycle policies.

35 min
3 sections
files
object-storage
uploads
1
2
3

01. Use direct upload for large files

Section 1 of 3

Route metadata through your API, but send bytes directly to object storage with pre-signed URLs. This avoids tying up application servers and makes retries easier.

text
Upload flow:
1. Client requests upload session.
2. API creates file metadata row with status PENDING.
3. API returns pre-signed object storage URL.
4. Client uploads bytes directly to storage.
5. Storage event triggers scanner.
6. Scanner marks file READY or BLOCKED.
7. Thumbnail worker creates previews.
Back to Course