@melonion
Du bist mit der FormData Idee schonmal auf einem guten Weg.
Schau mal bitte nach, ob du wie @thommyb schon erwähnt hat hier die definierten Wege befolgst, eine Datei via FormData hochzuladen.
Die offizielle Dokumentation redet hier davon, dass ein File oder einen Blob genutzt werden muss um eine Datei hochzuladen. (Hierbei ist vllt. interessant, das der File Datentyp auf dem Blob aufbaut.
Generell solltest du aber Dateien mit dem ChurchTools Client auch hochladen können.
Das habe ich z.B. in einem Privatprojekt (leider kein öffentlicher Code...) schon wie folgt gemacht:
const formData = new FormData();
formData.append('files[]', hierDeinFileOderBlobObject);
churchtoolsClient.post(`/files/${domainType}/${domainObjectId}`, formData);
So müsste der Upload dann auch funktionieren.
Der Download von Dateien geht dann analog zu dem, was Andreas auf GitHub geschrieben hat.
Wichtig ist nur, dass du den Cookie mitschickst, welche Library du für das wirkliche herunterladen der Datei nimmst, ist dann egal. (z.B. Axios, fetch oder das node eigene http)