强大的并不适用于快递

时间:2013-08-29 19:02:31

标签: node.js express

在任何时候浪费之前请注意,这是一个参考问题,以防有人需要它。但请随意纠正我:)

所以,我试图使用强大的(我知道它与bodyParser非常相似,我应该使用身体解析器!)使用express。它根本不起作用的问题。

这是我的代码的简单部分(相关部分)

    form.on('progress', function (bytesReceived, bytesExpected) {
        console.log(bytesExpected);
        console.log('progress ');
        if (bytesReceived > options.maxPostSize) {
            console.log('bla ');
            req.connection.destroy();
        }
    }).on('end', finish).parse(req,function(err, fields, files) {
            console.log(files);
});

现在,如果我尝试console.log - > err , fields , or files它不起作用。

正在发出的唯一事件就是进步。

2 个答案:

答案 0 :(得分:2)

如果您使用app.use(express.bodyParser()) 相当于:

app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());

多部分使用强大的,因此事件不会触发,你可以删除app.use(express.multipart());然后你可以使用强大的对象。

答案 1 :(得分:0)

问题是由parse功能引起的。要解决此问题,您需要不使用bodyParser。 所以我们假设我有一条路由/files,它只回复一个帖子请求,然后你需要为这条路线禁用bodyParser,如下所示:

app.use(function(req,res,next){

  // important .. this will skip body parser to avoide issues with formidable 

    if((req.path == '/file' ||req.path == '/file/') &&req.method === 'POST'){
   // GET , PUT , DELETE ,etc... will have bodyParser ^^^^^^^^^^^^^^^^^^^^^
        return next();
      }
    express.bodyParser(req,res,next);
    next();
});