java实现后台处理base64图片还原为文件
目录
- 后台处理base64图片还原为文件
- java Base64解析
- 关于Base64的解析方式如下
- 使用如下代码解析
后台处理base64图片还原为文件
/** * 将base64图片解析成文件存放本地 * @param imgStr * @return 本地临时文件的地址 */ 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中数据正常,问题解决。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
赞 (0)