我无法弄清楚为什么我的代码如下。我尝试上传由简单上传器(JADE)提供的多个文件:
input#upload-gallery(type='file', multiple="multiple", name='picture')
和一些javascript控制器,每次用户将文件插入上传器时发送数据
$("#upload-gallery").on('change', function(){
var files = $(this).get(0).files;
if (files.length > 0) {
var formData = new FormData();
for (var i = 0; i < files.length; i++) {
var file = files[i];
formData.append('pictures', file, file.name);
}
$.ajax({
url : '/upload/pictures',
type : 'POST',
data : formData,
processData : false,
contentType : false,
success : function (links) {
}
});
}
})
这是服务器部分:
var multer = require('multer');
var upload = multer({dest: "./gallery"});
...
...
app.post('/upload/pictures', upload.any(), function(req, res, next){
console.log(req.files) // <-- it always return [] array
});
问题是req.files
总是返回一个空数组。我可以让它上传单个文件就好了,但我无法上传多个文件。那么这里有什么不对?
到目前为止我尝试过:
formData
部分更改为formData.append('pictures[]', file, file.name);
无法正常工作upload.any()
更改为upload.array('pcitures')
,不起作用答案 0 :(得分:0)
原来我的multipart
插件与multer
有冲突。刚在app.js中注释掉了这些
//var multipart = require('connect-multiparty');
//app.use(multipart());
问题已经消失