【问题标题】:busboy is not defined connect-busboy with expresbusboy 未定义 connect-busboy 与 expres
【发布时间】:2015-05-27 09:21:06
【问题描述】:

我正在使用 expressjs 4.12.3,并尝试连接到 connect-busboy,但根据请求我无法获取 req.busboy 对象,它显示“未定义”我的简单代码如下:

var express=require('express');
var busboy = require('connect-busboy');
var app=express();
app.use(busboy());

app.use(function(req, res, next) {
   req.busboy.on('field', function(fieldname, val) {
     // console.log(fieldname, val);
     req.body[fieldname] = val;
   });

   req.busboy.on('finish', function(){
     next();
   });
 });
 
 app.listen(5555);

我已初始化 busboy 模块,将其分配给应用程序,同时发送 内容长度:“5276” content-type:'application/x-www-formurlencoded' 作为标题。

我做错了什么??

【问题讨论】:

  • 请求方法是'POST'
  • 我使用multer,无缝工作,没有监听任何事件
  • 我会用 multer 试一试,即使这段代码也应该可以工作,以确保我刚刚检查了 node-inspector 中的 req.method,它说“POST”现在我完全不知道为什么它行为如此。
  • 使用了 multer 库,它的作用就像一个魅力,但我仍然想知道上面的代码有什么问题,有什么建议吗?

标签: javascript node.js express busboy


【解决方案1】:

问题是您正在设置事件处理程序,但您实际上并没有将请求 传送到 busboy,以便它可以解析请求。在您的 busboy 事件处理程序之后添加 req.pipe(req.busboy);,它应该可以正常工作。

编辑:我略微误读了您的问题。如果req.busboyundefined,则意味着Content-Type 是错误的。如果你的Content-Type 真的是 application/x-www-formurlencoded,那就错了。它应该是:application/x-www-form-urlencoded

【讨论】:

  • 您好,感谢您的回复,我尝试使用“application/x-www-form-urlencoded”问题仍然存在,关于事件,我认为“app.use(busboy())”需要在乎吗?
猜你喜欢
  • 2014-07-30
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 2017-05-15
  • 1970-01-01
  • 2016-11-17
  • 2017-08-16
相关资源
最近更新 更多