2016-05-11 8 views
4

私はASP.NET 5を使用していますRCをIFormFileを使用してアップロードされたファイルを保存する方法2015のVisual StudioでASP.NET 5 RC1にMVC

私が定義されて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()メソッドを持っていません。

また、私はICollection<IFormFile>、コレクションを通じてループへIFormFileを変更した場合IFormFileインスタンスはSaveAs()メソッドが定義されているだろうことに気づきました。

私の場合ICollection<IFormFile>の代わりにIFormFileを使用します。

IFormFileを使用してファイルをシステムに保存する正しい方法はありますか?

+0

名前を付けて保存(拡張メソッド).Seeがここにありますhttps://github.com/aspnet/HttpAbstractions/blob/master/src/Microsoft.AspNet.Http.Extensions/FormFileExtensions.cs – garethb

答えて

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ため

ソリューション:あなたは、単にIFormFileの拡張子保存独自のファイルを作成することができます

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

ます'new FileStream'の代わりに' File.Create'を使うことができます: 'File.Create(" C:\ pathTofile ")' –

関連する問題