我有一个表单,其中需要通过三个单独的文件输入进行三个文件上传。使用 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>