Единственный способ сделать это - связать JSON, отправленный как task
, со строкой на стороне сервера. Затем вам придется вручную десериализовать его в объект. В случае, если это не очевидно, это также означает, что вы не получите никакой проверки ни на одном из членов этого объекта JSON. Это будет просто строка для ASP.NET Core и связующего устройства.
Тем не менее, я думаю, что проблема заключается в том, что вам нужно загружать файлы и думать, что это требует публикации как multipart/form-data
. На самом деле вы можете публиковать как JSON, но при этом включать загрузку файлов. Это требует двух изменений:
Вы должны привязать файл «загрузки» к byte[]
с, а не IFormFile
с на стороне сервера.
На стороне клиента, вы должны добавить их к публикуемому вами объекту JSON в виде строк в кодировке Base64 или массивов uint8.
Первая часть относительно проста. Десериализатор JSON, вызываемый связывателем моделей, автоматически преобразует строки, закодированные в Base64, в байтовый массив, и, конечно же, массив JS unint8 в любом случае, по сути, является просто байтовым массивом.
Вторая часть, вероятно, требует более подробного обсуждения. Вам потребуется использовать File API для чтения данных загружаемого файла, а затем преобразовать их в строку в кодировке Base64 или в массив uint8:
Base64
var reader = new FileReader();
reader.onload = function(e) {
let base64 = btoa(reader.result);
myJsonObject.files.push(base64);
}
reader.readAsBinaryString(file);
Массив байтов
var reader = new FileReader();
reader.onload = function(e) {
let bytes = Array.from(new Uint8Array(reader.result));
myJsonObject.files.push(bytes);
}
reader.readAsArrayBuffer(file);