2017-07-16 107 views
2

我想在Asp.net核心中实现文件上传。请看下文中我endpoit:如何在asp.net核心web api中上传文件

[HttpPost("upload")] 
    [AllowAnonymous] 
    public async Task<IActionResult> Post(List<IFormFile> files) 
    { 
     long size = files.Sum(f => f.Length); 

     // full path to file in temp location 
     var filePath = Path.GetTempFileName(); 

     foreach (var formFile in files) 
     { 
      if (formFile.Length > 0) 
      { 
       using (var stream = new FileStream(filePath, FileMode.Create)) 
       { 
        await formFile.CopyToAsync(stream); 
       } 
      } 
     } 


     return Ok(new { count = files.Count, size, filePath }); 
    } 

当我把它用邮差,我得到以下的结果,即使我选择的任何文件进行测试:

{ 
    "count": 0, 
    "size": 0, 
    "filePath": "/var/folders/24/rmgj9ypj37709tnhxr2hgtfr0000gn/T/tmpX0SwbF.tmp" 
} 
+0

提供更多信息,例如您希望发送的请求的方式,您使用的MIME类型等。 – Tseng

回答

1

这应该引导你在正确的方向。该方法正在接收一个jQuery post对象。

[HttpPost] 
    public async Task<IActionResult> ReadFileHeaders(IFormFile file) 
    { 
     if (file != null) 
     { 
      using (var stream = new MemoryStream()) 
      { 
       await file.CopyToAsync(stream); 
       // Now the file is loaded into the stream variable 
      } 
     } 

     return BadRequest("File required"); 
    }