You can try to clear the field ‘blob’ from the formData. Use the browser to inspect the message that is sent. In my case it looks like (upload)
-----------------------------5503282132083
Content-Disposition: form-data; name="data"
{"changes":{"8725724278030538":{"System.changedBy":{"value":"562949953423013"},"changedDate":{"value":1569334767812},......."createdDate":{"value":1569334767812}}}]}
-----------------------------5503282132083
Content-Disposition: form-data; name="blob"; filename="switch-off-icon.png"
Content-Type: image/png
Followed by encoded data.
As alternative you can use a seperate (optionally non persistent) entity to pass the string the server and do the uncompressing there.
On the server the filedocument is in a separate file on disk, but when a filedocument is passed thru the api it contains binary data.
I would recommend to create a custom widget.