.Net Core2.2 WebApi上传文件

基于.net core2.2的webapi程序,采用Asp.NET Core的新接口IFormFile,接收客户端上传的文件.按照以下写法,file的值永远是null

[HttpPost]
public void Post([FromForm] IFormFile file)
{

}

一.有两种方法解决这个问题:

1.属性绑定.在[FromForm]里添加Name属性如:[FromForm(name = "file")],客户端调用时需要保持一致

// POST api/values
[HttpPost]
public void Post([FromForm(Name = "file")] IFormFile file) { }

还可以和其他参数一起传过来

 // POST api/<controller>
        [HttpPost]
        public async Task<IActionResult> UploadFile(string fileName,[FromForm(Name ="file")]IFormFile formFile)

 

PostMan测试,注意参数名要保持一致,否则收到的值为null

 

2.通过Request.Form.Files获取文件,客户端可以任意指定name

 // POST api/values
[HttpPost]
public void Post() { IFormFile formFile= Request.Form.Files[0]; var filePath = @"D:\UploadingFiles\" + formFile.FileName; if (formFile.Length > 0) { using (var stream = new FileStream(filePath, FileMode.Create)) { formFile.CopyTo(stream); } } }

 二.客户端调用代码

  var request = new RestRequest(Method.POST);
            request.AddFile("file", @"d:\1.jpg");
            var restClient = new RestClient("http://localhost:63270/api/values");
            IRestResponse response = restClient.Execute(request);

 

.Net Core2.2 WebApi上传文件

全文结束