如何将文件上传到 ASP.NET Core 控制器?

Nik*_*ita 3 c# asp.net-core

我在网络客户端上有这个客户端代码来加载某种文件。

fileUploaded(files) {
  files.forEach(async ifile => {
    await axios.post('http://localhost:5000/api/upload', ifile)
      .then(res => {
        console.log(res)
      }).catch(err => {
        console.error(err); 
      });
  });
}
Run Code Online (Sandbox Code Playgroud)

我的端点代码如下所示:

[HttpPost("upload")]
public async Task<IActionResult> UploadFile([FromBody] IFormFile file)
{
    var data = new byte[file.Length];

    using (var bstream = file.OpenReadStream())
    {
        while (bstream.CanRead)
        {
            bstream.Read(data);
        }
    }

    // etc

    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

参数file始终为空。如何以正确的方式从客户端传递此文件?

leo*_*una 6

代替

UploadFile([FromBody] IFormFile file)
Run Code Online (Sandbox Code Playgroud)

使用

UploadFile([FromForm] IFormFile file)
Run Code Online (Sandbox Code Playgroud)

fileUploaded(files) {
  files.forEach(async ifile => {
    const formData = new FormData();
    formData.append('file', ifile)
    await axios.post('http://localhost:5000/api/upload', formData)
      .then(res => {
        console.log(res)
      }).catch(err => {
         console.error(err); 
      });
  });
}
Run Code Online (Sandbox Code Playgroud)