У меня есть метод asp web api Post в контроллере с моделью, которая может обрабатывать json-объект и файлы вместе
Это метод POST:
public async Task<IHttpActionResult> PostAsync([Required]Models.Email email, CancellationToken token = default(CancellationToken))
{
if (multipartContentProvider.IsMultipartRequest)
//manages the file upload..
}
return Content(HttpStatusCode.Created, "uploaded");
}
и вот javascript:
var formdata = new FormData();
//the file
formData.append('userpic', myFileInput.files[0], 'chris.jpg');
the json object
formData.append('email', new Blob([JSON.stringify({
subject: "hello there",
description: "this is a text"
})], {
type: "application/json"
}));
fetch(url, {
method: 'POST',
body: formData,
headers: {
}
}).then(function (response) {
if (response.status === 404) {
console.log("that did not work :(");
return;
}
return response.json();
}).then(function (data) {...}
В промежуточном программном обеспечении, которое обрабатывает многочастный запрос, я вижу элементы tvo в потоке, сам объект json с типом содержимого: application / json, и я вижу файл с типом содержимого = application / octet-stream.
Но он всегда завершается с ошибкой состояния модели, говоря:
{"message": "Запрос недействителен.", "modelState": {"email": ["Поле электронной почты является обязательным. "]}}
Как я могу загрузить запросить объект на контроллер и заставить его распознавать, что одним из элементов является модель электронной почты" email "?