[英]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.