【问题标题】:Body-Parser too large NodejsBody-Parser 太大 Nodejs
【发布时间】:2017-08-10 13:11:41
【问题描述】:

我目前正在开发一个 API,它应该接收图像的 base64,但是当我尝试将它传递到有效负载并通过 POST 发送时,服务器(顺便说一下,它是用 Node 制作的,使用 express 和 body-parser 作为中间件)给我以下错误:

request entity too large

在网上搜索了很多之后,我发现有人说我应该使用:

bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
app.use(bodyParser.json({limit: '50mb'}));

不要使用:

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

但是,这样做,我收到此错误:

Unexpected token i in JSON at position 5

有人知道我在这里缺少什么吗?提前致谢!

这是我尝试发送的对象的打印示例:

【问题讨论】:

  • 您是在正文中将图像作为原始文本发送,还是包装在 JSON 对象中?
  • @JoeClay,我作为 JavaScript 对象 (JSON) 发送,因为我在应用程序的前端使用 Angular 2
  • 好的,这排除了您缺少bodyParser 中间件。您可以将请求的内容(或生成 JSON 对象的代码 sn-p)添加到问题中吗?您发送的 JSON 格式似乎不正确。
  • @JoeClay 当然,我在问题中放了一个对象作为示例

标签: node.js express base64 body-parser


【解决方案1】:

感谢所有在这个问题上帮助我的人!对于那些面临或将面临这个问题的人,我可以通过将对象传递给 bodyParser.urlencoded 方法和 BodyParser.json 方法来解决这个问题。

由于他们在他们的方法中接受一个对象,我们可以传递请求的限制和大小,所以我这样配置我的:

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

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

app.use(bodyParser.json({
    limit: '5mb'
}));

这里有一个主题也可以提供帮助:

Issue on Stack

还有 BodyParser 本身的文档,点击documentation about BodyParser即可访问

【讨论】:

    【解决方案2】:

    尝试交换 bodyParser.jsonbodyParser.urlencoded

    var bodyParser = require('body-parser'); app.use(bodyParser.json({limit: '50mb'})); app.use(bodyParser.urlencoded({limit: '50mb', extended: true}))

    【讨论】:

    • 你知道我是否必须在对象中使用 JSON.stringfy 并将这个字符串发送到后端吗?
    • 你在发送 json 响应吗?
    • 如果是,您需要将其作为字符串发送并解析@client端
    • 我在发送到后端之前对对象进行了字符串化,但是当它到达那里时,它控制了一个空对象,我需要解析“request.body”吗?如果是这样,你知道怎么做吗?
    猜你喜欢
    • 2015-05-09
    • 2020-06-17
    • 2016-07-25
    • 2015-02-15
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多