我在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
将文件保存到系统的正确方法是什么?
答案 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创建自己的文件保存扩展名。