Hi I have a problem with Express.js, I need to send a base64 file to node.js, my configuraizone is what you see below, but when I send the file I get this error: PayloadTooLargeError: request entity too large! I've read that you need to set the limit on body-parsers like I did below, the fact is that it keeps happening to me how can I solve this?
Node Code:
const express = require("express");
const myParser = require("body-parser");
//const http = require('http');
const app = express();
//app.use(myParser.json({ type: 'application/*+json' }))
app.use(myParser.json());
app.use(myParser.urlencoded({
extended: true
}));
app.use(myParser.json({limit: '200mb'}));
app.use(myParser.urlencoded({limit: '200mb', extended: true}));
//Porta predefinita Server
const RunPort = 8988;
//Avvio del server sulla porta specificata
app.listen(RunPort, function () {
console.log("Serve run on Port: ", RunPort);
})
module.exports = app;
In your code you have called twice to bodyParser.json()
& bodyParser.urlencoded()
, the problem is that the one with limit
are after the calls without options, which defaults to 100kb
.
So when you POST something greater than 100kb
that error will be thrown, since the first parser will not go to the next middleware.
You shouldn't call bodyParser[method]
twice.
Remove:
app.use(myParser.json());
app.use(myParser.urlencoded({
extended: true
}));
And leave:
app.use(myParser.json({limit: '200mb'}));
app.use(myParser.urlencoded({limit: '200mb', extended: true}));
Depending on how you're posting the base64
string, you may want to use:
app.use(myParser.text({ limit: '200mb' });