Я пытаюсь сделать POST-запрос с multipart / form-data из приложения Angular 6 в службу REST в ASP.NET Core, но у меня ошибка 500. Я перепробовал слишком много решений, но ничего не получалось. Я пытался выполнить запрос на Postman и получить ту же проблему, но я пробовал в другом программном обеспечении, называемом ARC (Advanced REST Client), и работает как чудо, и я понятия не имею, почему.
На стороне сервера я получил InvalidDataException: отсутствует граница типа контента. В моем проекте я тоже использую сваггер
вот мой код
Запрос в угловых:
public uploadPlanilha(planilha: File, idLote: number): Observable<Array<RequisicaoComposicao>>{
let formData = new FormData();
formData.append('arquivo', planilha, planilha.name);
formData.append('idLote', idLote.toString());
let httpHeaders = new HttpHeaders();
httpHeaders = httpHeaders.set("Content-Type", "multipart/form-data");
return this.httpClient.post<Array<RequisicaoComposicao>>(`${this.API_URL}requisicoes/upload`, formData, {
headers: httpHeaders
});
}
Метод контроллера в Web Api
[HttpPost]
[Route("upload")]
[Consumes("multipart/form-data")]
[DisableRequestSizeLimit]
public ActionResult<List<RequisicaoComposicao>> PostPlanilhaRequisicoes([FromForm]ArquivoDto arquivoDto)
{
try
{
using (Stream arquivoPlanilha = arquivoDto.Arquivo.OpenReadStream())
{
List<RequisicaoComposicao> requisicaoComposicoes = _composicaoGestor.Inserir(arquivoPlanilha, int.Parse(arquivoDto.IdLote));
return Ok(requisicaoComposicoes);
}
}
catch (Exception)
{
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
Класс ArquivoDto
public class ArquivoDto
{
public IFormFile Arquivo { get; set; }
public string IdLote { get; set; }
}