java实现后台处理base64图片还原为文件
短信预约 -IT技能 免费直播动态提醒
后台处理base64图片还原为文件
private static String generateImage(String imgStr){
if(Strings.isNullOrEmpty(imgStr)){
return null;
}
BASE64Decoder decoder = new BASE64Decoder();
//转换前端数据
imgStr = imgStr.replaceAll(" ", "+");
//去除多余部分
imgStr=imgStr.replace("data:image/png;base64,", "");
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; i++) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
String filepath =System.getProperty("java.io.tmpdir") +"测试"+System.currentTimeMillis()+".png";
File file = new File(filepath);
if(file.exists()){
file.delete();
}
FileOutputStream fos = new FileOutputStream(file);
fos.write(b);
fos.flush();
fos.close();
logger.info("路径"+filepath);
return filepath;
}catch(Exception e){
return null;
}
}
//imgStr=imgStr.replace(“data:image/png;base64,”, “”); 关键地方 根据图片类型 过滤对应的类型
java Base64解析
最近在业务场景中,需要对第三方传递进来的字符进行base64解密,根据第三方文档提供的解析工具,对数据进行了解析
关于Base64的解析方式如下
String sign = "xxxxxxxxxxxxxxxxxxxxxxxx";
sun.misc.BASE64Decoder decode = new sun.misc.BASE64Decoder();
String json = new String(decode.decodeBuffer(sign));
使用sun.misc.BASE64Decoder对数据解析,放测试环境测试发现解析出来的字符串正确无误,
但是在上线之后,根据第三方传递的sign,解析出来之后发现字符串最后多了一个字符 “7”,查询逻辑 没有发现问题,最后猜测是sun.misc.BASE64Decoder出了问题,于是换了Base64的解析jira
使用如下代码解析
String sign = "xxxxxxxxxxxxxxxxxxxxxxxxx";
Base64 base64 = new Base64();
String json = new String (base64.decodeBase64(sign.getBytes()));
发现返回json中数据正常,问题解决。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341