java实现后台处理base64图片还原为文件

网友投稿 492 2022-08-29


java实现后台处理base64图片还原为文件

目录后台处理base64图片还原为文件java Base64解析关于Base64的解析方式如下使用如下代码解析

后台处理base64图片还原为文件

/**

* 将base64图片解析成文件存放本地

* @param imgStr

* @retuhttp://rn 本地临时文件的地址

*/

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中数据正常,问题解决。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python代理+线程+进程+socket(Python 线程)
下一篇:Python的标准比较运算符(Python的比较运算符)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~