2012-03-16 20 views
0

私は以下のような状況があれば、どこで成功するのですか。イメージのアップロードを処理し、dbに格納します。このコードを念頭に置いて、複数の画像アップロードをどのように実装しますか? ありがとうございます。mvc3での複数の画像のアップロード

だから最初にまず。

PropertyViewModel.cs 

... 
public byte[] ImageData { get; set; } 
public string ImageMimeType { get; set; } 

public PropertyViewModel(Property x) 
{ 
    .... 
    ImageData = x.ImageData; 
    ImageMimeType = x.ImageMimeType; 
} 

public void ToDomainModel(Property x) 
{ 
    .... 
    x.ImageData = ImageData; 
    x.ImageMimeType = ImageMimeType; 
} 

今Create.cshtmlかみそりページを形成

@using (Html.BeginForm("Create", "Property", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    ... 
    <input type="file" name="Image"/> 
} 

}

コントローラ要求

[HttpPost] 
public ActionResult Create(PropertyViewModel newProperty, HttpPostedFileBase image) 
     { 
      if (ModelState.IsValid) 
      { 
       if (image != null) 
       { 
        newProperty.ImageMimeType = image.ContentType; 
        newProperty.ImageData = new byte[image.ContentLength]; 

        image.InputStream.Read(newProperty.ImageData, 0, image.ContentLength); 
       } 
       using (session...) 
       { 
        using (...begin transaction) 
        { 
         MyDomain.Property model = new MyDomain.Property(); 
         newProperty.ToDomainModel(model); 
         ..session save model 
         .. commiting session 
        } 
       } 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       return View(newProperty); 
      } 
     } 

答えて

0
@using (Html.BeginForm("Create", "Property", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    ... 
    <input type="file" name="Image"/> 
    <input type="file" name="Image"/> 
    <input type="file" name="Image"/> 
    <input type="file" name="Image"/> 
} 

またはブラウザがHTML5をサポートしている場合は、複数選択することができますを処理するために、アップロードのファイルダイアログ:

@using (Html.BeginForm("Create", "Property", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    ... 
    <input type="file" name="Image" multiple="multiple"/> 
} 

、その後:

public ActionResult Create(PropertyViewModel newProperty, IEnumerable<HttpPostedFileBase> image) 
+0

は素晴らしいthatsのあなたに感謝します。このビューモデルを使用して編集アクションを実装する方法を念頭に置いてください。編集アクションでいくつかのIDに基づいてすべての画像を読み込む。 – BobRock

+0

私は 'IEnumerable Image {get;}を追加します。セット; }}プロパティを直接ビューモデルに追加し、2番目のアクション引数を取り除きます。 –

+0

次に、domainプロパティを変更する必要がありますか?今度は --------- パブリック仮想バイト[] ImageData { get {return _ImageData; } セット { if(_ImageData == value) リターン; _ImageData = value; }} パブリック仮想列ImageMimeType {GET {_ImageMimeTypeを返します。 } セット { if(_ImageMimeType == value) リターン; _ImageMimeType = value; } } – BobRock

関連する問題