2017-03-07 15 views
1

2つのファイルアップロードコントロールがあります。最初のコントロールは、基本的にプロダクトアイコンであるタイプimageの単一のファイルを受け入れます。第2のアップロード制御は複数の画像アップロードを可能にし、製品の複数の画像を含む。2つのアップロードコントロールの画像を1つのビューで表示するMVC

は、今私は成功したコードのこの作品は完全にファイルを保存している

for (int i = 0; i < Request.Files.Count; i++) 
     { 
      var file = Request.Files[i]; 

      if (file != null && file.ContentLength > 0) 
      { 
       if (validImageTypes.Contains(file.ContentType)) 
       { 
        var fileName = Path.GetFileName(file.FileName); 
        LocationImage fileDetail = new LocationImage() 
        { 
         FileName = fileName, 
         Extension = Path.GetExtension(fileName), 
         ID = Guid.NewGuid() 
        }; 
        fileDetails.Add(fileDetail); 
        var path = Path.Combine(Server.MapPath("~/Upload/Images"), fileDetail.ID + fileDetail.Extension); 
        file.SaveAs(path); 
       } 

次のコードを使用してファイルをアップロードすることができていますが、私は私が何とかファイルことを知ってほしい別のディレクトリにアイコンファイルを保存したいです私はアイコンフォルダに保存することができるように単一のアップロードコントロールから来ています。

答えて

2

あなたは

<input type="file" name="productIcon" /> 
<input type="file" name="productImages" multiple /> 

を制御し、代わりにあなたのform(あなたのビュー)中のSO Request.Files

からファイルを読み込むのアクションメソッドの名前付きパラメータを使用してファイルの入力に2つの異なる名前を付けることができますあなたのアクションメソッドで、入力ファイル要素の名前と同じ名前の2つのパラメータを持つようになりました。

[HttpPost] 
public ActionResult Save(HttpPostedFileBase productIcon, 
              IEnumerable<HttpPostedFileBase> productImages) 
{ 
    // to do : Save these 
    if(productIcon!=null) 
    { 
    // to do : Save icon image 
    } 
    if(productImages!=null) 
    { 
    foreach(var img in productImages) 
    { 
     // to do : Save img 
    } 
    } 
    // to do : Return something 
} 
+0

「otherImages」入力は明らかに複数の画像を許可するため、タグに 'multiple'属性を追加する必要があります。 –

+0

@ChrisPrattはい。一定。 – Shyju

+0

あなたの答えをありがとう、それは私のために完全に働いた –

関連する問題