2009-09-04 20 views
1

MVCアプリケーションで作成アクションの一部として画像をアップロードする必要があります。ASP.NET MVCを使用した画像のアップロード

イメージはファイルサーバーに保存され、dbにはそのパスが含まれます。

> <input type="file" id="MyImage" name="MyImageName" /> 

私がアクセスし、コントローラのアクションでこれを保存する方法:

私は、ファイルを取得するためにfollwingタグを使用する予定?お使いのコントローラのアクションで

答えて

1

私はすべての私のコントローラが継承するBaseControllerクラスでこれを置く:その後、私はコントローラに

// this just prefixes datetime as yyyyMMddhhmmss to the filename, to 
    // be use that no name collision will occur. 
    protected static String PrefixFName(String fname) 
    { 
     if (String.IsNullOrEmpty(fname)) 
     { 
      return null; 
     } 
     else 
     { 
      return String.Format("{0}{1}", 
           DateTime.Now.ToString("yyyyMMddhhmmss"), 
           fname); 
     } 
    } 

    protected String SaveFile(HttpPostedFileBase file, String path) 
    { 
     if (file != null && file.ContentLength > 0) 
     { 
      if (path == null) 
      { 
       throw new ArgumentNullException("path cannot be null"); 
      } 
      String relpath = String.Format("{0}/{1}", path, PrefixFName(file.FileName)); 
      try 
      { 
       file.SaveAs(Server.MapPath(relpath)); 
       return relpath; 
      } 
      catch (HttpException e) 
      { 
       throw new ApplicationException("Cannot save uploaded file", e); 
      } 
     } 
     return null; 
    } 

savedPath = SaveFile(Request.Files["logo"], somepath); 
+0

Request.Files空ですが、私の文字列フィールドファイル名が設定されています。私のビューHTMLは: littlechris

+1

戻り値?また、なぜ入力タグの値attrを設定していますか?フォームを再実行した場合(フォームが無効で、ユーザーが何かを修正する必要があるなど)、再利用できないことに注意してください。 – giorgian

+0

ソート済みです。名前のタブがありません。ビューにはIDだけがあります。 :) – littlechris

2

それが必要な場合にもRequest.Filesを通じてファイルを取得することができ

Action(HttpPostedFileBase MyImageName) { 
    etc; 
} 
関連する問題