Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。 一、Base64优、缺点 优点: 1、减少了http请求; 2、数据就是图片; 3、简单的加密(一般人看不懂) 缺点: 1、图片转换成Base64字符串,字符串会很长 2、影响到数据库性能 二、Base64显示方式: - data:,文本数据
- data:text/plain,文本数据
- data:text/html,HTML代码
- data:text/html;base64,base64编码的HTML代码
- data:text/css,CSS代码
- data:text/css;base64,base64编码的CSS代码
- data:text/JavaScript,Javascript代码
- data:text/javascript;base64,base64编码的Javascript代码
- data:image/gif;base64,base64编码的gif图片数据
- data:image/png;base64,base64编码的png图片数据
- data:image/jpeg;base64,base64编码的jpeg图片数据
- data:image/x-icon;base64,base64编码的icon图片数据
Html标签使用 - <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAwADAAAD/2w" alt="Jpeg图片"/>
CSS中使用: - background-image: url("data:image/png;base64,iVBORw0KGgo=...");
三、Base64转换工具类: 1、使用JDK6自带的(不建议使用) - import sun.misc.BASE64Encoder;
- import sun.misc.BASE64Decoder;
-
- BASE64Encoder encoder = new BASE64Encoder();
- String imageString = encoder.encode(byteArray);
-
-
- BASE64Decoder decoder = new BASE64Decoder();
- byte[] imageByteArray = decoder.decodeBuffer(imageString);
但这个性能一般,而且转换出来的base64字符串会有换行符,可能还需要替换换行符,避免在某些场景因为分行导致出错。 2、使用Jdk8的Base64工具类(优先考虑使用) - java.util.Base64
-
-
- Base64.getEncoder().encodeToString("aaaaaaaa".getBytes("utf-8"));
-
-
- Base64.getDecoder().decode("c29tZSBzdHJpbmc=");
-
-
-
- Base64.getUrlEncoder().encodeToString("test.do?abcd".getBytes("utf-8"));
-
-
-
- Base64.getMimeEncoder().encodeToString("aaaaaaaa".getBytes("utf-8"));
-
-
- Base64.getEncoder().wrap(outputStream);
- Base64.getDecoder().wrap(inputStream);
性能超好,如果已经使用JDK8,直接使用这个。 基本例子: - String base64String = Base64.getEncoder().encodeToString("我是谁呢?".getBytes("UTF-8"));
- System.out.println("base64String=" +base64String);
-
- byte[] stringByte = Base64.getDecoder().decode(base64String);
- System.out.println("stringByte=" + new String(stringByte));
结果: - base64String=5oiR5piv6LCB5ZGi77yf
- stringByte=我是谁呢?
3、使用Spring提供的Base64Utils类 - org.springframework.util.Base64Utils;
4、使用apache中的Base64 - org.apache.commons.codec.binary.Base64
|