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

 更新时间:2022年02月09日 11:26:13   作者:qq_36275012  
这篇文章主要介绍了java实现后台处理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中数据正常,问题解决。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java本服务如何调用本服务接口

    java本服务如何调用本服务接口

    这篇文章主要介绍了java本服务如何调用本服务接口问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 如何解决Spring的UnsatisfiedDependencyException异常问题

    如何解决Spring的UnsatisfiedDependencyException异常问题

    这篇文章主要介绍了如何解决Spring的UnsatisfiedDependencyException异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 使用lombok的@Data会导致栈溢出StackOverflowError问题

    使用lombok的@Data会导致栈溢出StackOverflowError问题

    这篇文章主要介绍了使用lombok的@Data会导致栈溢出StackOverflowError问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • SpringBoot MyBatis保姆级整合教程

    SpringBoot MyBatis保姆级整合教程

    因为Spring Boot框架开发的便利性,所以实现Spring Boot与数据访问层框架(例如MyBatis)的整合非常简单,主要是引入对应的依赖启动器,并进行数据库相关参数设置即可
    2022-06-06
  • Java中处理邮件附件的方法(本地文件和在线URL)

    Java中处理邮件附件的方法(本地文件和在线URL)

    这篇文章主要介绍了在Java中处理邮件附件的方法,针对本地文件和在线URL两种附件来源,提供了两种解决方案,并提供了下载文件和发送邮件的代码示例,需要的朋友可以参考下
    2025-03-03
  • springboot中如何引入AOP切面编程

    springboot中如何引入AOP切面编程

    这篇文章主要介绍了springboot中如何引入AOP切面编程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Spring Security在标准登录表单中添加一个额外的字段

    Spring Security在标准登录表单中添加一个额外的字段

    这篇文章主要介绍了Spring Security在标准登录表单中添加一个额外的字段,我们将重点关注两种不同的方法,以展示框架的多功能性以及我们可以使用它的灵活方式。 需要的朋友可以参考下
    2019-05-05
  • java设计模式--建造者模式详解

    java设计模式--建造者模式详解

    这篇文章主要介绍了Java设计模式之建造者模式,结合具体实例形式分析了建造者模式的概念、原理、实现方法与相关使用注意事项,需要的朋友可以参考下
    2021-07-07
  • Mybatis-plus如何提前获取实体类用雪花算法生成的ID

    Mybatis-plus如何提前获取实体类用雪花算法生成的ID

    本文主要介绍了Mybatis-plus如何提前获取实体类用雪花算法生成的ID,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java中的LinkedHashSet集合解读

    Java中的LinkedHashSet集合解读

    这篇文章主要介绍了Java中的LinkedHashSet集合解读,LInkedHashSet这个容器不知道大家在平时的工作用的多吗,反正我基本上没有用过,所以,本文主要对于它的特点、使用场景、实现原理,做一个讲解,希望对大家平时的工作有所帮助,需要的朋友可以参考下
    2023-09-09

最新评论