使用大字符串执行 post/put 请求时,Express 服务器发送 500 错误代码

当我使用nodejs+express和body-parserpackage 在服务器端管理我的路由和数据时,我正在构建小项目。在前端,我有react一个安装了tinyMCE编辑器的简单应用程序。问题是当我选择要插入到文档中的图像时,编辑器将其base64设为 blob,当我尝试保存包括 base64 图像(通过向服务器执行 PUT 请求)在内的更改时,节点会吐出错误 500。一开始我认为这是一个问题使用 git 问题主题之一中建议的应用程序 json 标头。


所以我切换到


"Content-Type": "application/x-www-form-urlencoded"


然而问题依然存在。


然后我尝试了一些小图像16x16(以前是340x300)并且它起作用了......


所以这可能意味着 POST 在数据部分中有太多字符,但我认为限制是1.9GB.


这是一些服务器代码示例:


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

app.use(bodyParser.json());


router.put("/:id", update);


const update = (req, res, next) => {

    documentController.update(req, res, next);

};


const update = async (req, res, next) => {

    const { name } = req.body;

    const document = await Document.findOne({ name });


    ...


    document

        .save()

        .then(document => {

            ...

        })

        .catch(err => next(err));

};

和前端请求:


  request = async (url, method, data) => {

    try {

      let headers = {

        //"Content-Type": "application/json"

        "Content-Type": "application/x-www-form-urlencoded"

      };

      let config = {

        headers,

        method

      };

      if (data !== undefined) {

        //config["body"] = data;

        let query = "";

        data = JSON.parse(data);

        for (let key in data) {

          query +=

            encodeURIComponent(key) + "=" + encodeURIComponent(data[key]) + "&";

        }

        query = query.slice(0, -1);

        config["body"] = query;

      }

      let response = await fetch(url, config).catch(error =>

        console.log(error)

      );

      let json = await response.json();

      return json;

    } catch (error) {

      console.log(error);

    }

  };

也许有人可以指出当图像较大时 PUT 请求有什么问题以及如何解决它。


莫回无
浏览 437回答 1
1回答

杨魅力

看看multer节点中间件。它将使用流处理上传,而不是在保存之前等待整个文件加载到服务器的内存中。编辑(在看到带有错误的评论后)尝试增加您的应用程序接受的大小限制:app.use(bodyParser.json({limit: '50mb'})); app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript