2016-05-11 18 views
4

mit IFormFile in ASP.NET MVC 5 RC1 speichern Ich bin mit ASP.NET 5 RC mit Visual Studio 2015Wie hochgeladene Datei

Ich habe ein Ansichtsmodell definiert:

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

und Controller:

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

Das Problem ist, dass intellisense zeigt, dass es keine SaveAs() Methode. Ich fand here heraus, dass diese Schnittstelle tatsächlich keine SaveAs() Methode hat.

Auch erkennen ich, dass, wenn ich IFormFile zu ICollection<IFormFile> und Schleife durch Ändern der Sammlung der IFormFile Instanzen haben die SaveAs() Methode definiert.

In meinem Fall möchte ich IFormFile statt ICollection<IFormFile> verwenden.

Wie wäre die korrekte Methode zum Speichern von Datei im System mit IFormFile?

+0

Es gibt eine SaveAs (Extension-Methode) .Siehe hier https://github.com/aspnet/HttpAbstractions/blob/master/src/Microsoft.AspNet.Http.Extensions/FormFileExtensions.cs – garethb

Antwort

5

Ich folgte dem von @garethb here vorgeschlagenen Link und verwendete die vorgeschlagene Erweiterungsmethode. Es klappt!

Lösung für ASP.NET RC1:

Namespace

using Microsoft.AspNet.Http; 

Controller Aktion

[HttpPost] 
public IActionResult Create(TeamVM vm) 
{ 
    FormFileExtensions.SaveAs(vm.UploadedLogo, "C:\pathTofile"); 
    return View(); 
} 

Kredit aufzunehmen für diese Antwort auf @garethb geht.

Lösung für ASP.NET RC2:

Namespace

using Microsoft.AspNetCore.Http; 
using System.IO; 

Controller Aktion

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

Sie kann 'File.Create' anstelle von' new FileStream' verwenden: 'File.Create (" C: \ pathTofile ")' –

Verwandte Themen