JS:如何使用FormData发送多个文件(jQuery Ajax)

在我的表单中有多个文件上传,使用FormData只上传一个文件,虽然我选择了多个要上传的文件,以下是代码

HTML

 

JS

  var ajaxData = new FormData(); ajaxData.append( 'action','uploadImages'); jQuery.each($("input[name^='photo']")[0].files, function(i, file) { ajaxData.append('photo['+i+']', file); }); $.ajax({ url: URL, data: ajaxData, cache: false, contentType: false, processData: false, type: 'POST', dataType:'json', success: function(data) { if (data.status == 'success') { location.reload(); } } }); 

我在服务器上使用PHP ,使用HTML attribute name i,e photo我只能保存文件,动态文件名对我不起作用。

你在javascript中有一个错误:你只在一个输入中迭代文件,请看看这个

 var ajaxData = new FormData(); ajaxData.append( 'action','uploadImages'); $.each($("input[type=file]"), function(i, obj) { $.each(obj.files,function(j, file){ ajaxData.append('photo['+j+']', file); }) }); 

关于jsfiddle的例子

  

上一个答案有一个小错误,修复了下一个代码,并将通过ajax发送多个文件:

 var formData = new FormData(); $.each($(".TheFiles"), function (i, obj) { $.each(obj.files, function (j, file) { formData.append('Attachment[' + i + ']', file); // is the var i against the var j, because the i is incremental the j is ever 0 }); }); formData.append('Destination', Destination); //add more variables that you need formData.append('ReplyTo', ReplyTo);//add more variables that you need formData.append('Body', Body);//add more variables that you need 

可选择只为你可以看到我的ajax配置

 $.ajax({ url: 'YourUrl', type: 'POST', data: formData, async: false, success: function (data) { location.reload(); }, complete: function () { $(Here).text('Enviado com sucesso'); }, error: function (err) { alert("Não deixe nenhum campo vazio"); }, cache: false, contentType: false, processData: false }); 

这些答案不起作用。

 var ajaxData = new FormData(); ajaxData.append( 'action','uploadImages'); $.each($("input[type=file]"), function(i, obj) { $.each(obj.files,function(j,file){ ajaxData.append('photo['+j+']', file);//i had to change "i" by "j" }) }); 

在前端

 

在后端(nodejs)添加此(使用multer)

 var multer=require('multer') app.post('/test',upload.array('photo[]',6),function(req ,res,next){ var images=[] if(req.files){ for(var i=0;i