Store the key, not the URL
A URL can change (a signed link expires, a domain moves). A key doesn’t. Keep the key in a column such asavatar_key and build the link on read.
First add the column in Studio: Data → profiles → Columns → Add column avatar_key, type Text (short), and apply the migration (Columns and types).
Replace a file
Give the new file a new key, update the record, then delete the old key. A fresh key avoids stale caches.Several files per record
Create anattachments table in Studio (Data → Create table): record_id, key, name, size, content_type. Save the name the person chose in name; the key itself should be generated. Give the table the owner quick set (Access tab) and an owner column.
Clean up
Deleting a record doesn’t delete its files. Remove them with the record:Quotas
Largest file caps one file. Your plan caps total storage; uploads beyond it fail (in Python asQuotaExceededError, a kind of ForbiddenError). See usage under Project → Usage & plan in Studio.
Keeping data and files consistent
Upload
Upload and handle errors.
Patterns
Complete designs.