Finally figured it out. The fancy fetch wrapper I wrote was trying to make the file a stringified JSON thing. I overrode that and finally the file uploads work.
This is what I get for building my own utilities instead of just using axios or whatever.
@JacksonBates you can do stringified JSON things with file uploads, just need to base64 encode on your way up. Best done in your client code since it know which member to assign it to (unless you have a standard member for uploads like files:)
Welcome to thundertoot! A Mastodon Instance for 'straya