![](/img/trans.png)
[英]Angular POST returns 500 error from ASP.NET Core Web API
[英]Error on try to post file from Angular 6 to ASP.NET Core Web Api
我正在尝试使用 multipart/form-data 从 Angular 6 应用程序向 ASP.NET Core 中的 REST 服务执行 POST 请求,但出现错误 500。我尝试了太多解决方案,但没有任何效果。 我试图在 Postman 上执行请求并遇到同样的问题,但我在其他名为 ARC(高级 REST 客户端)的软件中尝试过,并且效果很好,但我不知道为什么。
在服务器端,我收到 InvalidDataException: Missing content-type boundary。 在我的项目中,我也在使用 swagger
这是我的代码
角度请求:
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; }
}
删除您不需要的[FromForm]
标签。
在这一行: formData.append('arquivo', planilha, planilha.name);
将其更改为formData.append('arquivo', planilha);
我从未使用过它,因此我认为您不需要[Consumes("multipart/form-data")]
属性以太。 (除非你正在使用像 swagger 这样的东西,并且你想告诉它这个方法正在消耗什么然后保留它)
我也会删除这一行httpHeaders = httpHeaders.set("Accept", "multipart/form-data");
我使用 AngularJS + ASP.NET Core 2.1 并发现相同的错误 --> System.IO.InvalidDataException: Missing content-type boundary
。
我的解决方案是在 http 请求前端设置'Content-Type: undefined'
。 我在 StackOverflow 的某个地方读到过,如果有帮助,您可以快速尝试一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.