У меня есть форма, в которой три загрузки файлов должны происходить через три отдельных ввода файлов. Используя 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-кода выглядит следующим образом (со всеми тремя загрузочными «виджетами» по одному и тому же шаблону):
<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>