I was pretty taken aback at how complex uploading files actually is so I made it into a uml diagram to help understand it better
Seems like client based uploading including larger files is actually fairly difficult
This doesn't even include logic for accessing the files after they've been uploaded haha