这里要注意一下,后台接收后需要截取或是替换这个’data:image/png;base64,’,让它为空或是截取它后面的一大串
java代码如下:
我这里的imgStr是在前端已经处理过了,所有可以直接转换。
小伙伴们可以用以下方法替换
imgStr = imgStr.replaceAll("data:image/png;base64,", "");
public void fileUpload(@RequestBody String imgStr) {
//对字节数组字符串进行Base64解码并生成图片
if (imgStr == null) {
//图像数据为空
}
BASE64Decoder decoder = new BASE64Decoder();
try {
//Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
//调整异常数据
if (b[i] < 0) {
b[i] += 256;
}
}
//新生成的图片
String imgFilePath = "D:\\vehicle\\uploadPath\\" + KeyUtil.genUniqueKey() + ".png";
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
特别要注意
传入的base64编码在传输过程中是否会对特殊符号编码处理,如果会,
就用以下替换,这是我碰到的乱码问题
imgStr = imgStr.replaceAll("%2F", "/");//将%2F转成/
imgStr = imgStr.replaceAll("%3D", "=");//一样的意思
谢谢大家!!!