我正在将ASP.NET 5 RC与Visual Studio 2015一起使用。

我有一个ViewModel定义:

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

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

问题在于,智能感知表明没有SaveAs()方法。我发现here这个接口(interface)实际上没有SaveAs()方法。

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

而言,我想使用IFormFile而不是ICollection<IFormFile>

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

最佳答案

我遵循了@garethb here建议的链接,并按建议使用了扩展方法。有用!

ASP.NET RC1的解决方案:

要包含的命名空间

using Microsoft.AspNet.Http;

Controller Action
[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;

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

关于c# - 如何在ASP.NET 5 RC1 MVC中使用IFormFile保存上传的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37153261/

10-11 20:36