表达:PayloadTooLargeError:请求实体太大

时间:2020-05-01 06:08:40

标签: javascript node.js express base64 tedious

当我尝试在POST请求中发送Base64字符串时遇到此错误。

POST /saveImage 413 10.564 ms - 1459
PayloadTooLargeError: request entity too large

已经尝试

-->  app.use(bodyParser.urlencoded({ limit: "50mb", extended: true, parameterLimit: 50000 }))
-->  app.use(bodyParser.urlencoded({limit: '50mb'}));
-->  app.use(bodyParser({limit: '50mb'}));

这是我的代码(api.js类)

const express = require('express');
var app = express();
const router = express.Router();
var Connection = require('tedious').Connection
var Request = require('tedious').Request
var TYPES = require('tedious').TYPES
var multer = require('multer');
 ....
 ....
 ....



router.post('/saveImage', (req, res) => {
request=new Request('SAVE_IMAGE',(err, rowCount, rows)=>{
    if(err){
        console.log(err);
    }

});
request.addParameter("Base64Image", TYPES.Text, req.body.IMG)
connection.callProcedure(request);
 });

API调用(图像类包含Base64格式的图像和其他字段,但是我猜是由于Base64字符串长度而引起的问题。小的图像不会造成任何麻烦)

create(image: Image) {
return this._http.post('/saveImage', image)
  .map(data => data.json()).toPromise()
 }

1 个答案:

答案 0 :(得分:1)

我遇到了同样的错误。我试过你试过的方法没有用。

我猜你正在上传一个文件。解决这个问题的简单方法是不设置 Content-Type。

我的问题是我在标题上设置了:Content-Type: application/json 并且我 [是] 使用 multer(expressjs 中间用于上传文件)。

每当我尝试上传文件时都会出现错误。

因此,在使用 postman 或使用任何工具或库(如 axiosjs 或 fetch() API)发出此类请求时,请勿设置内容类型。

一旦您删除了内容类型,它将起作用。这就是我所做的

在我的代码中,我有:

const express = require('express');

...

const app = express();

app.use(express.json());
...

...它正在工作,因为我删除了邮递员标题上的 Content-Type。

确保您没有在标题上使用 Content-Type。

相关问题