【问题标题】:How to save uploaded file using IFormFile in ASP.NET 5 RC1 MVC如何在 ASP.NET 5 RC1 MVC 中使用 IFormFile 保存上传的文件
【发布时间】:2017-06-08 14:27:19
【问题描述】:

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

问题是智能感知显示没有SaveAs() 方法。我发现here这个接口其实没有SaveAs()方法。

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

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

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

【问题讨论】:

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


【解决方案1】:

我按照@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();
}    

【讨论】:

  • 您可以使用File.Create 代替new FileStream : File.Create("C:\pathTofile")
【解决方案2】:

您可以简单地为 IFormFile 创建自己的文件保存扩展名。

Check out the code in this link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多