[HttpPost("ImportPeople")]public async Task<IActionResult> ImportPeople([FromForm] string facesetid, [FromForm] string name, [FromForm] string content, [FromForm] IFormFile file)
        {}
这是我的服务端代码,用的asp.net core var stream = File.Open(i.Info.path + "/photo.jpg", FileMode.Open, FileAccess.Read);
var boundary = string.Format("----------------------------{0}", DateTime.Now.Ticks.ToString("x"));
MultipartFormDataContent c = new MultipartFormDataContent(boundary);
c.Add(new StringContent(facesetid), "facesetid");
c.Add(new StringContent(name), "name");
c.Add(new StringContent(content), "content");
c.Add(new StreamContent(stream ,(int)stream .Length), "file");
var resp = await new HttpClient().PostAsync(Host+ "/api/Peoplesets/ImportPeople",c);
这是我上传文件的方法代码。
现在的问题是每次上传服务器端其他参数都能接收到,但是就是file每次都是null。也没有抛出什么异常。

解决方案 »

  1.   

    用IFormCollection 代替 IFormFile
    注意这个是文件列表
      

  2.   

    我看了下Request.Form里面是有file的,但是Request.Form.files里面没有,应该是上传代码有问题,controller里面应该没啥问题
      

  3.   

    那你在Add后面多加一个参数
    c.Add(new StreamContent(stream ,(int)stream .Length), "file","photo.jpg");
    试一下
      

  4.   

    可以在Request.Form.files里看到file了但是参数里的file还是null,我还是用IFormCollection 试试吧
      

  5.   

    可以在Request.Form.files里看到file了但是参数里的file还是null,我还是用IFormCollection 试试吧
    IFormCollection 还是null,我只有在request里取了
      

  6.   

    https://download.csdn.net/download/yenange/10850219看下这个, 可以参考下
      

  7.   

    html中input的name与IFormFile file的file名一样 
      

  8.   

    用IFormCollection files
         foreach (var filesFile in files.Files)
                {
                    var fileName = filesFile.FileName;//文件名
                    var fileExt = Path.GetExtension(fileName);//后缀
                    var ms = filesFile.OpenReadStream();//打开文件流
                    var msBuffer = ms.ToArray();//文件转为字节数组
                    ms.Dispose();      
                }