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

时间:2016-05-11 04:41:41

标签: c# asp.net asp.net-mvc visual-studio-2015

我在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()方法。我发现here此界面实际上没有SaveAs()方法。

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

就我而言我想使用IFormFile代替ICollection<IFormFile>

使用IFormFile将文件保存到系统的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

我按照@garethb here建议的链接使用了建议的扩展方法。它有效!

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();
}    

答案 1 :(得分:0)

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

Check out the code in this link