zoukankan      html  css  js  c++  java
  • 通过http方式传递base64图片字符串无法还原成图片的原因

    碰到个问题:后端将图片转成base64格式,通过json或者其实格式发给前端,前端接收到这个base64后无法还原成图片。

    后来发现在使用http协议传递base64图片字符串的过程中,一些特殊字符会在传输过程中发生改变或者被添加了换行,所以需要前端接收到后进行处理,或者后端发送前处理一下。

    后端处理方式

    String strSrcImage = base64格式的字符串.replaceAll("[\s*	
    
    ]", "");
    

    把这个strSrcImage发送给前端,前端接收到的base64就不会受特殊字符影响无法还原图片了


    这里会出现问题还有个原因可能是使用了下面的方式进行编码

    
            BASE64Encoder encoder = new BASE64Encoder();
            //生成BASE64编码
            return encoder.encode(bytes);
    
    

    点进这个encoder的源码看下

    可以看到这里流转字节的时候,字节数组的大小被限定了,所以就会自动换行,通过http发送给前端后就会多一些换行符,所以没法再通过base64还原成图片


    这里可以换种方式实现,使用java.util.Base64里面的方式实现

    return Base64.getEncoder().encodeToString(bytes);
    

    可以看到使用这种方式得到的base64字符串是一行到底的,虽然看着不是很舒服,但是不会出现特殊字符的问题

  • 相关阅读:
    自己收集的一些伪元素/伪类
    ie9的placeholder不显示的解决办法(包含多个密码框)
    9.14上午
    9.13
    9.11笔记
    html基础英语单词
    选择器的分辨
    学习笔记
    RecyleView
    自定义view获取宽高
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14899196.html
Copyright © 2011-2022 走看看