ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

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;
}