为什么bodyparser.jsonparsingmultipart / formdata?

我试图用multer中间件来parsingmultipart / from-data。 这是我的发帖要求:

POST /api/files HTTP/1.1 Host: localhost:3000 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW Cache-Control: no-cache Postman-Token: f55caef0-1d59-fe80-f6ae-00e38fcbc92a ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="guia1"; filename="guia_1_MC_2012_2c.pdf" Content-Type: application/pdf ----WebKitFormBoundary7MA4YWxkTrZu0gW 

这是我的app.js代码:

 var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var validator = require('express-validator'); var multer = require('multer'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(multer({ dest: './files/'})); app.use(validator()); 

当我这样做时,我得到以下错误(现在更新):

 Error: invalid json at parse (.../node_modules/body-parser/lib/types/json.js:72:15) at .../node_modules/body-parser/lib/read.js:98:18 at IncomingMessage.onEnd (.../node_modules/body-parser/node_modules/raw-body/index.js:136:7) at IncomingMessage.g (events.js:180:16) at IncomingMessage.EventEmitter.emit (events.js:92:17) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13) 

所以看起来bodyParser.json()是parsing数据,当它不应该。

刚刚发现,身体分析器工作正常! 事情是,当提交multipart / form-data时默认情况下,邮递员将content-type设置为application / json,同时隐藏Header。 感谢loganfsmyth!