https://learn.javascript.ru/formdata
или хочется именно вручную? Тогда самый простой вариант - через конструктор блоба
const body = new Blob(['some text', file, 'some text 2', ...]);
Вот такая штука просто берет и конкатенирует всё в один блоб, который ты просто отправляешь в fetch. При этом строки автоматом кодируются в utf8, а файлы просто копируют свои байты. Здесь строки - это текстовые значения формы, разделители и прочая служебная хрень, ну а файлы - это файлы, которые даже не надо читать ФайлРидером.