为multipart和url编码的上传创建mailgun web hook时出错

时间:2017-06-24 18:23:16

标签: javascript express

我正在为Mailgun编写一个Web钩子监听器,经过几次尝试,我意识到我的问题是Mailgun可以使用multipart或x-www-form-urlencoded内容类型发布webhook。

这是我目前使用Multer的代码(可以处理多部分但无法处理x-www-form-urlencoded),我也尝试使用BodyParser(处理x-www-form-urlencoded但不处理multipart)。

我的问题很简单:我应该怎么做才能在我的webhook监听器上支持这两种内容类型方法?

var express = require('express');
var multer  = require('multer');
var app = express();

app.set('port', process.env.PORT || 3000);


app.post('/parse', multer().any(), function (req, res) {
  var contentType = req.get('Content-Type');
  console.log(contentType);

  res.sendStatus(200);
});

var server = app.listen(app.get('port'), function() {
  console.log('Listening on port %d', server.address().port);
});

1 个答案:

答案 0 :(得分:0)

经过一些研究后,我设法使用express-busboy来解决这个问题,它基本上运行在busboy-connect之上,并且可以解析这两种内容类型。

var express = require('express');
var busboy = require('express-busboy');
var app = express();

busboy.extend(app, {
  upload: true,
  path: '/uploads',
  allowedPath: /./
});

app.set('port', process.env.PORT || 3000);

app.post('/parse', function (req, res) {
  console.log(req);
  console.log(req.body);
  console.log(req.files);

  res.sendStatus(200);
});


var server = app.listen(app.get('port'), function() {
  console.log('Listening on port %d', server.address().port);
});