如何在ASP.NET 5 RC1 MVC中使用IFormFile保存上传的文件

我在Visual Studio 2015中使用ASP.NET 5 RC。

我定义了一个ViewModel:

public class TeamVM { public IFormFile UploadedLogo { get; set; } } 

和一个控制器:

 [HttpPost] public IActionResult Create(TeamVM vm) { vm.UploadedLogo.SaveAs("filename.txt"); // Problem here - There is no SaveAs method return View(); } 

问题是intellisense显示没有SaveAs()方法。 我在这里发现这个接口实际上没有SaveAs()方法。

此外,我意识到如果我将IFormFile更改为ICollection并循环,则IFormFile实例的集合将定义SaveAs()方法。

在我的情况下, 我想使用IFormFile而不是ICollection

如何使用IFormFile将文件保存到系统的正确方法?

我按照@garethb建议的链接进行操作,并按照建议使用扩展方法。 有用!

ASP.NET RC1的解决方案

要包含的命名空间

 using Microsoft.AspNet.Http; 

控制器动作

 [HttpPost] public IActionResult Create(TeamVM vm) { FormFileExtensions.SaveAs(vm.UploadedLogo, "C:\pathTofile"); return View(); } 

这个答案归功于@garethb。

ASP.NET RC2的解决方案

要包含的命名空间

 using Microsoft.AspNetCore.Http; using System.IO; 

控制器动作

 [HttpPost] public IActionResult Create(TeamVM vm) { // Make sure the path to the file exists vm.UploadedLogo.CopyTo(new FileStream("C:\pathTofile", FileMode.Create)); return View(); } 

您只需为IFormFile创建自己的文件保存扩展即可。

查看此链接中的代码