ASP.NET MVC FILE UPLOAD
ASP.NET MVCでファイルをアップロードする方法を調べる
以外なところでハマり、悩まされたので、メモる。
Controllerでもファイルの受け取り方法
- Modelにバインドして取得する。
- Request.Filesから、inputのnameをキーに取得する。
public ActionResult Upload(FormCollection form) { var file = Request.Files["uploadfile"]; } もしくは public ActionResult Upload(MyViewModel model) { model.UploadFile; // -> すでにバインド状態となる。 }
View側での準備
- formのmethodはPOST
- formのenctypeは"multipart/form-data" ←これがわからず悩んだ
- inputのtype=file, name=取得キーもしくはModelの項目名と一致すること
<form method="post" enctype="multipart/form-data"> <input type="file" name="uploadfile" /> <button type="submit" > UPLOAD</button> </form> もしくは @Using(Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype="multipart/form-data"}) { <input type="file" name="uploadfile" /> <button type="submit" > UPLOAD</button> }
ViewModel定義
基本、対象項目の型を”HttpPostedFileBase”にしておくだけ
Public calss MyViewModel
{
public HttpPostedFileBase UploadFile;
}