Should the tmp file stuff be pushed up into `UploadedFile`? Two reasons I can think of; this has a lot of logic happening in the controller layer, also managing this stuff in `UploadedFile` would make it easier to manage the file removal with a context manager.