问题一:将文件用 base64 编码出现换行
转换代码如下
public static String pdfToBase64String(String filePath){
FileInputStream input = null;
ByteArrayOutputStream out = new ByteArrayOutputStream();
BASE64Encoder encoder = new BASE64Encoder();
try {
File file = new File(filePath);
input = new FileInputStream(file);
StringBuilder buffer = new StringBuilder();
byte[] temp = new byte[1024];
for(int len = input.read(temp); len != -1;len = input.read(temp)){
out.write(temp, 0, len);
buffer.append(encoder.encode(out.toByteArray()));
out.reset();
}
return buffer.toString();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
try {
input.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果里有换行
解决
这里 base64 转换使用的是 sun.misc.BASE64Encoder
,在 byte
数组长度超过 56 时会自动添加换行
而 java.util.Base64
或 org.apache.commons.codec.binary.Base64
就不会出现该问题。
参考资料: stackoverflow
问题二:分段编码时中间会出现==
解决
base64 编码时如果长度不是 3 的倍数,多余的位置会用=补全
因此把分段长度设置为 3 的倍数即可
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于