I tend to think uploading files via GraphQL is an anti-pattern. The downsides outweigh the benefits over just using presigned URLs.
Advantages:
* Possibly simpler to get a simple case up and running
* No need to use a file store that supports presigned URLs
* Can perform processing of files during upload.
Disadvantages:
* No progress events during upload, so you can't show a progress bar
* A GraphQL server wants to be as lightweight as possible, and not keep requests open for long. The common resolution strategies tend to involve creating a lot of file descriptors, dealing with files in the form of base64 strings or attachments is asking for trouble.
* Simplicity benefits don't last long.
* Perceptively slower for clients.