0

私はMVC 5アプリケーションで作業しています。そして私は複数のファイルをアップロードする必要があります。Asp.net MVC 5 Ajaxマルチファイルアップロードは、バリュープロバイダ、提案が必要な場合がありますか?

私が知っているものは、HttpPostedFileクラスとHttpPostedFileBaseクラスは1つのファイルを取得できます。しかし、私の条件は、一度に複数のファイルをアップロードする必要があることです。 AJAXを使用して複数ファイルのアップロードがサポートされていないので

私の質問には)、

1ですが、私は複数のファイルを受け入れるように自分の行動をする値プロバイダを記述する必要がありますか?

2)カスタム値プロバイダを実装する場合、アクションメソッドのパラメータには何を使用する必要がありますか(IEnumerable<HttpPostedFileBase> fである必要があります)?これを実行したため、私はnullを取得しています。ここで

更新

ビュー

から私のAjax呼び出し
var files = e.target.files; 
     if (window.FormData !== undefined) { 
      var fd = new FormData(); 
      for (x = 0; x < files.length; x++) { 
       fd.append("file" + x, files[x]); 
      } 
      // fd.append("fawad", "ali"); 
      $.ajax({ 
       type: "POST", 
       url: "/FileOp/FileUpload", 
       contentType: false, 
       processData: false, 
       data: fd, 
       sucess: function (result) { 
        // alert(); 
       }, 
       error: function (xhr, status, p3, p4) { 
        alert(xhr.responseText); 
       } 
      }); 

されており、ここで私のアクションメソッド(HttpPost)

+1

を使用することができます。あなたのビューモデル(またはPOSTメソッドのパラメータ、 'IEnumerable XXX'、' XXX'はあなたのファイル入力の名前です)が必要です。(私はあなたが 'FormData'を使っていると仮定します[この回答](http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681)〜へファイルをアップロードするには、ajaxを使用してファイルをアップロードしてください。 –

+0

@StephenMuecke "ファイル入力の名前"。x個のファイルが存在する可能性があるので、最初のファイルは 'file1'、2番目は' file2'などです。 – Alex

+0

@StephenMuecke here AJAXの$アヤックス({ タイプ: "POST"、 URL: "/ FileOp /するFileUpload"、 のcontentType:偽、 PROCESSDATA:偽、 データ:FD、 成功事例の:機能(結果){ // alert(); }、 エラー:function(xhr、status、p3、p4){ alert(xhr.responseText); } }); – Alex

答えて

1

アドインファイルは名前の

[HttpPost] 

    public object FileUpload(IEnumerable<HttpPostedFileBase> file) 

おかげでありますfile0,file1file2などであり、fileという名前のパラメータにはバインドされません。

変更または

for (x = 0; x < files.length; x++) { 
    fd.append("file", files[x]); // modify 
} 

にスクリプト内のコード、あなたはあなたがカスタム値プロバイダを必要としない

fd.append("[" + x + "].file", files[x]); 
+0

ありがとう、その良い仕事 – Alex

関連する問題