Base64Utils.java
4.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package com.skua.modules.ajh.util;
import org.apache.commons.lang.StringUtils;
import java.io.*;
import java.util.Base64;
public class Base64Utils {
// Base64 编码与解码
private static final Base64.Decoder DECODER_64 = Base64.getDecoder();
private static final Base64.Encoder ENCODER_64 = Base64.getEncoder();
// dpi越大转换后的图片越清晰,相对转换速度越慢
private static final Integer DPI = 200;
// 编码、解码格式
private static final String CODE_FORMATE = "UTF-8";
/**
* 1. text明文 转 Base64字符串
*
* @param text 明文
* @return Base64 字符串
*/
public static String textToBase64Str(String text) {
if (StringUtils.isBlank(text)) {
return text;
}
String encodedToStr = null;
try {
encodedToStr = ENCODER_64.encodeToString(text.getBytes(CODE_FORMATE));
} catch (UnsupportedEncodingException e) {
e.getMessage();
}
return encodedToStr;
}
/**
* 2. text的Base64字符串 转 明文
*
* @param base64Str text的Base64字符串
* @return text明文
*/
public static String base64StrToText(String base64Str) {
if (StringUtils.isBlank(base64Str)) {
return base64Str;
}
String byteToText = null;
try {
byteToText = new String(DECODER_64.decode(base64Str), CODE_FORMATE);
} catch (UnsupportedEncodingException e) {
e.getMessage();
}
return byteToText;
}
/**
* 3. 文件(图片、pdf) 转 Base64字符串
*
* @param file 需要转Base64的文件
* @return Base64 字符串
*/
public static String fileToBase64Str(File file) throws IOException {
String base64Str = null;
FileInputStream fin = null;
BufferedInputStream bin = null;
ByteArrayOutputStream baos = null;
BufferedOutputStream bout = null;
try {
fin = new FileInputStream(file);
bin = new BufferedInputStream(fin);
baos = new ByteArrayOutputStream();
bout = new BufferedOutputStream(baos);
// io
byte[] buffer = new byte[1024];
int len = bin.read(buffer);
while (len != -1) {
bout.write(buffer, 0, len);
len = bin.read(buffer);
}
// 刷新此输出流,强制写出所有缓冲的输出字节
bout.flush();
byte[] bytes = baos.toByteArray();
// Base64字符编码
base64Str = ENCODER_64.encodeToString(bytes).trim();
} catch (IOException e) {
e.getMessage();
} finally {
try {
fin.close();
bin.close();
bout.close();
} catch (IOException e) {
e.getMessage();
}
}
return base64Str;
}
/**
* 4. Base64字符串 转 文件(图片、pdf) -- 多用于测试
*
* @param base64Content Base64 字符串
* @param filePath 存放路径
*/
public static void base64ContentToFile(String base64Content, String filePath) throws IOException {
BufferedInputStream bis = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
// Base64解码到字符数组
byte[] bytes = DECODER_64.decode(base64Content);
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes);
bis = new BufferedInputStream(byteInputStream);
File file = new File(filePath);
File path = file.getParentFile();
if (!path.exists()) {
path.mkdirs();
}
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
// io
byte[] buffer = new byte[1024];
int length = bis.read(buffer);
while (length != -1) {
bos.write(buffer, 0, length);
length = bis.read(buffer);
}
// 刷新此输出流,强制写出所有缓冲的输出字节
bos.flush();
} catch (IOException e) {
e.getMessage();
} finally {
try {
bis.close();
fos.close();
bos.close();
} catch (IOException e) {
e.getMessage();
}
}
}
// 测试
public static void main(String args[]) throws IOException {
// 1.测试:text明文 转 Base64字符串
String s = fileToBase64Str(new File("C:\\Users\\Harbor\\Pictures\\Camera Roll\\111.jpg"));
System.out.println(s);
base64ContentToFile(s, "C:\\Users\\Harbor\\Pictures\\Camera Roll\\232.jpg");
}
}