12

我正在尝试设置limit选项,bodyParser.urlencodedParser因为我的 POST 数据大于默认值。我的代码目前如下所示,但无论我尝试什么,我总是收到以下错误:

错误:请求实体太大

var express = require('express');
var router = express.Router();
var jsonfile = require('jsonfile');
var bodyParser = require('body-parser');

var urlencodedParser = bodyParser.urlencoded({limit: '5mb'});

router.post('/data', urlencodedParser ,function(req, res) {


    if(typeof req.body.data === 'undefined')
    {
       console.log('Missing data');
       res.status(500).send({ error: 'Missing Data Parameters' });
       return;
    }

    // Static return value
    var output = [ 
        {"f" : "1"},
        {"f" : "2"},
        {"f" : "3"}
    ];

    res.send(output);
}

非常感谢任何帮助。

4

2 回答 2

25

我也遇到了同样的错误(使用 MEAN.js),试图限制快速配置(如在其他线程中回答的那样),但仍然没有运气。

我发现有时问题不仅是限制,如果您传递了很多参数,您还需要设置参数限制。

我还通过如下设置参数限制成功解决了这个问题:

var bodyParser = require('body-parser');

 app.use(bodyParser.urlencoded({
    parameterLimit: 100000,
    limit: '50mb',
    extended: true
  }));

参数限制的默认值为 1000。

来自 body-parser 的来源: https ://github.com/expressjs/body-parser#parameterlimit

于 2017-01-30T06:28:52.493 回答
18

我在通过 ajax 发送图像数据时遇到问题并得到“错误:请求实体太大”,设法通过添加来解决它

app.use(bodyParser.json({limit: '50mb', type: 'application/json'}));

但最重要的部分是确保我打电话给

app.use(bodyParser());

在我设置了限制之后,希望这会有所帮助!!

于 2016-07-25T00:41:38.660 回答