如何使用NodeJS,Nginx和base64上传图像? (413 PayloadTooLargeError:请求实体太大)

时间:2018-12-28 02:00:20

标签: node.js nginx base64 image-uploading payload

我正在尝试使用Postman原始文本选项上传5张base64图像,并设置了application / json标头。 服务器不断返回所提到的错误。 我正在Nginx反向代理后面使用NodeJS。

我尝试了下面代码中提到的所有选项,包括将限制增加到(100M),这显然不是问题。

NodeJS(MAXIMUM_FILE_SIZE_LIMIT ='500mb'):

app.use(bodyParser.urlencoded({ limit: process.env.MAXIMUM_FILE_SIZE_LIMIT, parameterLimit: 100000, extended: true }));
app.use(bodyParser.json({ limit: process.env.MAXIMUM_FILE_SIZE_LIMIT, extended: true }));
// app.use(bodyParser.text({ limit: process.env.MAXIMUM_FILE_SIZE_LIMIT, extended:true }));
app.use( bodyParser.text({type : 'application/text-enriched', limit: process.env.MAXIMUM_FILE_SIZE_LIMIT}) );   
app.use( bodyParser.raw({limit: process.env.MAXIMUM_FILE_SIZE_LIMIT}) );   

Nginx
内部配置(服务器,http,位置):
nginx.conf,
网站启用/默认,
网站可用/默认:

client_max_body_size 100M

我想成功上传图像(5张),它们的总大小不超过2MB。

1 个答案:

答案 0 :(得分:0)

最终的解决方案是将nginx的client_max_body_size 5M;仅保留在nginx.conf,以及在NodeJS代码中使用以下几行:

app.use(bodyParser.urlencoded({ limit: '5mb', extended: true }));
app.use(bodyParser.json({ limit: '5mb' }));

请注意!
尝试了多种组合之后,问题似乎根本与上述提到的问题无关。
在按顺序使用node命令执行服务器时,一切正常。但是,由于我想保持应用程序的运行状态(在服务器重新启动的情况下),因此我使用了forever
Forever启动了该应用程序,但是无论nginx和node的设置如何,显然每次都会抛出413错误。
切换到PM2,终于解决了。

祝你好运!

相关问题