3 つの個別のファイル入力を介して 3 つのファイルのアップロードを行う必要があるフォームがあります。AJAX を使用formData
すると、アップロードする最初のファイルを取得できますが、後続のファイルはアップロードされません。
この問題は、次のコード行に関係していると思います。
var formData = new FormData($("form")[0]);
アップロードするファイルの数を決定するには、何らかの方法で反復する必要があると思いますが、それを実現するロジックについては確信が持てません。これまでの私のコードは次のとおりです。
$("#uploadA, #uploadB, #uploadC").click(function(){
var formData = new FormData($("form")[0]);
var progress = $(this).prop("id");
$.ajax({
url: url,
type: "POST",
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){ // Check if upload property exists
myXhr.upload.addEventListener("progress",function(e) {
if(e.lengthComputable){
$("#"+progress).attr({value:e.loaded,max:e.total});
}
}, false);
}
return myXhr;
},
success: success,
error: error,
data: formData,
contentType: false,
processData: false
});
});
完成させるために、サンプル HTML は次のとおりです (3 つのアップロード「ウィジェット」はすべて同じパターンに従います)。
<div class="form-box">
<label for="A">Episode (MP3)</label>
<progress max="100" value="0" id="progressA"></progress>
<input type="file" name="a" value="a" id="a">
<input type="button" value="Upload" id="uploadA" name="uploadA">
</div>