【发布时间】:2016-08-21 06:46:00
【问题描述】:
我只是想不出为什么我的代码在下面有什么问题。我尝试上传由简单上传器 (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'),不起作用
【问题讨论】:
-
我用你提供的代码让它为我工作。是否存在冲突的路由或表单不是 multipart/form-data?
-
你是对的。我创建了另一个新的干净项目只是为了测试我是否有故障
node或其他东西。它有效!
标签: javascript node.js multer