所以我尝试使用jquery ajax将多个文件上传到我的服务器。
所以这就是我到目前为止所做的:
<input type="file" id="lab" name="lab[]" size="10" class="filestyle" multiple/>
这是我处理更改事件的javascript:
function on_documents_changed(){
$("#lab").change(function() {
var formdata = new FormData();
//formdata.append('case_id', $('#case-id').text());
var inp = document.getElementById('lab').files;
for (var i = 1; i <= inp.length; i++) {
formdata.append('lab_' + i, inp.item(i));
console.log('Appended ' + i);
}
Main.Mod.do_ajax('casereport/upload_documents/laboratory', 'POST', function(){}, formdata);
});
}
这是do_ajax;
的代码function do_ajax(url,type,callback_function,formdata){
var params = {
type: type,
url: Main.Vars.host + url,
contentType: false,
cache: false,
processData:false,
dataType: 'json',
success: function(data){
callback_function(data);
}
}
if(formdata != null){
params.data = formdata;
}
$.ajax(params);
}
我的问题是,当我尝试上传时,可以说,4个文件。它只读取服务器中的3个文件。我注意到只有最后一个文件没有被读取或者甚至没有在$ _FILES中。
非常感谢您的回复!
答案 0 :(得分:1)
更改你的for循环,因为inp
是一个从索引0
开始的数组,但是你正在访问它,所以第一个文件将会被删除: -
function on_documents_changed(){
$("#lab").change(function() {
var formdata = new FormData();
//formdata.append('case_id', $('#case-id').text());
var inp = document.getElementById('lab').files;
for (var i = 0; i < inp.length; i++) {
formdata.append('lab_' + i, inp.item(i));
console.log('Appended ' + i);
}
Main.Mod.do_ajax('casereport/upload_documents/laboratory', 'POST', function(){}, formdata);
});
}