base64传到后端发生变化

项目需要用json传base64到后端,后端把base64转成图片,json格式如下:

{
  "image":"base64..."
}

用的是POST请求,但传到后端后base64的字符发生了变化,导致无法转成图片,发生的变化如下,第一个是正常的,第二个是发生的

正常:

img

传到后端获取结果:

img

如果不用json,用www-form表单形式传过去就正常
我用我自己搭建的spring项目传过去,是没有问题的,但是项目里就不行,这是什么原因?
代码如下,这是一个前置的接口拦截:

@WeaReplaceBefore(value = "/api/hrm/resful/synHrmresource",description = "拦截人员同步接口,同步人员信息",order = 1)
    public void before(WeaBeforeReplaceParam param){
        BufferedReader streamReader = null;
        try {
            streamReader = new BufferedReader(new InputStreamReader(param.getRequest().getInputStream()));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        StringBuilder responseStrBuilder = new StringBuilder();
        String inputStr;
        try {
            while ((inputStr = streamReader.readLine()) != null) {
                responseStrBuilder.append(inputStr);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String params = responseStrBuilder.toString();
        Gson gson = new Gson();
        Map paramMap2 = gson.fromJson(params, (Type) Map.class);
        String base64 = Util.null2String(paramMap2.get("base64"));
    }

已解决,是项目中的安全包引起的

前端的base64是不是需要转一下啊,类似这样

new_base64code = encodeURIComponent(base64code)

base64编码和解码的问题吧,MIME 友好型 base64 编码和解码即编码后如果长度每大于 76 就会加入 \r\n 这样的换行控制符,就容易导致有问题。前后端编码前检查看看有没有 \r\n 这样的换行控制符

【相关推荐】



  • 这篇博客: 前后端分离实现图片上传中的 2.3查看历史头像,将数据库中该用户的所有头像以json格式返回给前端,图片仍然以base64进行了加密 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
     @RequestMapping("/user/historyImg")
        public  RespBean historyImg(@RequestBody UserChangePhoto userChangePhoto){
            String userId = userChangePhoto.getUserId();
            List<UserImg> allImgById = userimgMapper.findAllImgById(userId);
            if (allImgById.size()<1){
                return RespBean.error("历史头像为空");
            }
            return RespBean.success(allImgById);
        }

     

     其中上面的userId为返回给前端的用户id,下面的就是数据库中该用户所使用过的图片经过base64编码后的字节数组,前端可以将其进行base64解码后还原成图片。

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^