The complexity of the implementation, as you can see above, is low.
Ok, we understand the how and the why, let's see if this is a good solution. If we want to send a file as part of this JSON Object, we first have to turn it into a text representation. A JSON Object, which is used to send GraphQL Requests, is a string.
You might be asking why base64 at all? The reason is, you cannot just send a file as part of a string. This reads a file and returns it as a base64 encoded string.