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



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

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); 
});
});
}

我的端点代码如下:

[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();
}

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

而不是

UploadFile([FromBody] IFormFile file)

使用

UploadFile([FromForm] IFormFile file)

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); 
});
});
}

在UploadFile方法中,只需执行以下

//if asp.net mvc
var file1 = System.Web.HttpContext.Current.Request.Files[0];
//if asp.net core
var file2 = Request.Form.Files[0];

最新更新