You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express中body-parser致Base64字符串损坏,请求排查问题

问题分析与解决办法
  • 核心原因是body-parser的urlencoded中间件配置问题
    当移动端发送请求的Content-Type为application/x-www-form-urlencoded时,body-parser的urlencoded中间件默认遵循该格式的规范,会把字符串里的+解析成空格——但Base64中的+是编码的有效组成部分,被替换后直接导致图片数据损坏,传给Google接口自然报错。Postman能正常工作,是因为你在Postman中使用了正确的Content-Type(比如application/json或text/plain),不会触发urlencoded的解析规则。

  • 解决办法

    1. 调整客户端请求的Content-Type:让移动端发送请求时,将Content-Type设为application/json(把Base64放在JSON结构中)或者text/plain,这样服务器会用对应的json或text中间件解析,不会替换+字符。
    2. 修改urlencoded中间件配置(仅当必须使用application/x-www-form-urlencoded格式时):给urlencoded中间件添加配置参数,同时在路由处理中手动将空格还原为+:
      app.use(bodyParser.urlencoded({ extended: false, parameterLimit: 1000000 }));
      // 路由处理逻辑里还原Base64字符串
      const validBase64 = req.body.image.replace(/ /g, '+');
      
    3. 优先推荐第一种方案,因为它符合不同Content-Type的规范,能避免后续出现其他编码相关问题。

内容的提问来源于stack exchange,提问作者Phil Lucks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:57:02