Я пытаюсь загрузить изображение и данные формы POST (хотя в идеале я бы хотел, чтобы оно было json) для конечной точки в моем приложении Azure Mobile Services.
У меня есть метод ApiController:
[HttpPost]
[Route("api/upload/{databaseId}/{searchingEnabled}/{trackingEnabled}")]
public async Task<IHttpActionResult> Upload(string databaseId, string searchingEnabled, string trackingEnabled, [FromBody]string metadata) {
if (!Request.Content.IsMimeMultipartContent()) {
return BadRequest("No image is uploaded.");
}
else {
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var file in provider.Contents) {
// Process each image uploaded
}
}
}
Это работает, когда я удаляю [FromBody]string metadata, но тогда он отлично работает.
Когда [FromBody]string metadata включен (как указано выше), я получаю ошибку:
The request entity media type 'multipart/form-data' is not supported for this resource.
Однако я хотел бы POST дополнительный metadata (который может быть длинным, поэтому я не хочу помещать его в Uri).
Как я могу сохранить логику загрузки файла, а также POST дополнительные данные строки на мой контроллер?
Я использую Azure Mobile Services, поэтому этот код находится внутри System.Web.Http.ApiController (если это имеет значение).