Я пытаюсь загрузить файл и некоторые данные (список объектов) в конечную точку web-api ядра 2.1 для ASP.net.
Этот код ниже генерирует и правильно отправляет ожидаемую полезную нагрузку:
const formData = new FormData()
formData.append('file', this.file)
formData.append('data', JSON.stringify(this.mappings))
axios.post('upload', formData)
// {headers: {'content-type': 'multipart/form-data'}} optional ???
Полезная нагрузка выглядит следующим образом: (как видно из Chrome Dev-Tools, вкладка сети)
------WebKitFormBoundarydAP5tYG5GcFa4ivU
Content-Disposition: form-data; name="file"; filename="Master-List.xls"
Content-Type: application/vnd.ms-excel
------WebKitFormBoundarydAP5tYG5GcFa4ivU
Content-Disposition: form-data; name="data"
[{"required":true,"type":"field","value":"code","col":1,"text":"Item Code"},{"required":true,"type":"field","value":"name","col":2,"text":"Description"},{"required":true,"type":"field","value":"barcode","col":3,"text":"Barcode"},{"type":"field","value":"category","col":null,"text":"Category"},{"type":"field","value":"unit","col":null,"text":"Unit"},{"type":"location","value":1,"col":6,"text":"Store 1"}]
------WebKitFormBoundarydAP5tYG5GcFa4ivU--
Конечная точка Web-API выглядит следующим образом:
[HttpPost]
[Route("upload")]
//[Consumes("multipart/form-data")]
public Task<ActionResult> _upload([FromForm] Upload obj)
{
// do something
return Ok();
}
public class Upload
{
public Field[] data { get; set; }
public IFormFile file { get; set; }
}
public class Field
{
public int col { get; set; }
public string type { get; set; }
public string value { get; set; }
}
Я могу получить file
, но data
всегда пуст.
Пожалуйста, что мне не хватает?