簡體   English   中英

發送文件到(獲取到 c# web api)

[英]Send file to (fetch to c# web api)

我試圖通過 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 並發送 'file' 會得到同樣的錯誤。 如果刪除“Content-Type”,則在每種情況下都會獲得 415 狀態。 如果將 'Content-Type' 設置為 'application/json' 並將 IFormFile 更改為字符串,則發送 json 它可以正常工作。

1. [FromBody]用於接收application/json數據。 您需要將[FromBody]更改為[FromForm]

2.使用fetchFormData上傳文件,不能設置Content-Type header。

整個工作演示如下:

let data = new FormData();
data.append('file', file);
const response = fetch('https://localhost:7054/Pictures',
{
    method: 'POST',  
    body: data
});

Api controller:

[HttpPost]
public async Task<ActionResult> Index([FromForm] IFormFile file)
{
   //.....
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM