使用强大的节点file upload不起作用

我们希望实现一个function,将多个file upload到ExpressJS服务器,并通过ajax调用返回所有独特的URL。

以下是我前端的示例代码:

 var formData = new FormData(); for (var i = 0; i < nameId.length; i++) { if($(nameId[i])[0].files[0]){ formData.append(nameId[i], $(nameId[i])[0].files[0], $(nameId[i])[0].files[0].name); } } $.ajax({ url: '/upload-files', type: 'POST', data: formData, processData: false, contentType: false, success: function(data){ console.log('upload successful!'); console.log(data); } }); 

在我们的路由器中,我们有下面的代码片段来接受请求并存储文件:

 router.post('/upload-files',function(req, res, next){ var form = new formidable.IncomingForm(); form.multiples = true; form.uploadDir = path.join(__dirname, '/uploads'); form.on('file', function(field, file) { console.log("File incoming"); fs.rename(file.path, path.join(form.uploadDir, file.name)); }); form.on('error', function(err) { console.log('An error has occured: \n' + err); }); form.on('end', function() { res.end('success'); }); }); 

但是,在路由器中没有发生过任何事情。 请求进入路由器内部,但之后什么也没有。

这里有什么不对吗? 经过长时间的等待请求失败,我们在服务器端和客户端没有收到任何错误。

请build议。 谢谢

我能够通过添加和更新以下代码片段来解决它:

在上传请求处理function添加代码中:

 form.parse(req); 

并在app.js中更新了以下代码片段:

 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended:false})); 

到( multipart处理multipart数据)

 app.use(bodyParser.json()) .use(bodyParser.urlencoded()); 

注意由于parsing器中的更改,下列警告消息在启动服务器时即将到来:

 body-parser deprecated undefined extended: provide extended option