我試圖通過 JS Fetxh API 將檔案發送到 ASP .NET 6 WebAPI 并獲得 400 狀態。
let data = new FormData()
data.append('file', file)
const response = await fetch('https://localhost:7054/Pictures',
{
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data'
},
body: data
});
[HttpPost]
public async Task<ActionResult> Index([FromBody]IFormFile file)
{
try
{
using (var fs = new FileStream(dir, FileMode.Create))
{
await file.CopyToAsync(fs);
}
return StatusCode(StatusCodes.Status201Created);
}
catch
{
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
如果洗掉 FormData 并發送“檔案”會得到相同的錯誤。如果洗掉 'Content-Type' 在每種情況下都會得到 415 狀態。如果將 'Content-Type' 設定為 'application/json' 并將 IFormFile 更改為字串,然后發送 json 就可以了。
uj5u.com熱心網友回復:
1.[FromBody]用來接收application/json資料。您需要更改[FromBody]為[FromForm]
2.上傳檔案使用fetch和.FormData你不能設定Content-Type標題。
整個作業演示如下:
let data = new FormData();
data.append('file', file);
const response = fetch('https://localhost:7054/Pictures',
{
method: 'POST',
body: data
});
API 控制器:
[HttpPost]
public async Task<ActionResult> Index([FromForm] IFormFile file)
{
//.....
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460900.html
標籤:javascript C# 网 拿来 asp.net-core-webapi
上一篇:將Dapper與運算子一起使用
