如何在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创建自己的文件保存扩展即可。
查看此链接中的代码