网站首页 > 博客文章 正文
我们公司用的云之家作为企业内容的IM通讯工具,那么就经常会涉及通过云之家进行消息推送,这个就有点类似微信了。那么我在推送图文消息的时候,云之家需要我把图片转Base64的格式传过去。
最开始我傻傻的用在线工具把图片转成Base64然后复制到程序里,当然这肯定是不好的,但是为了测试,就这样做了,然后占了70%的代码行数。正式的话,我们肯定是要借助代码来实现。那么我们需要先获取项目目录下的文件
File file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "static/warnning.png");
然后借助sun.misc.BASE64Decoder把文件转Base64
public static String file2Base64(File file) {
InputStream in = null;
byte[] data = null;
// 读取文件字节数组
try {
in = new FileInputStream(file);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回 Base64 编码过的字节数组字符串
return encoder.encode(data);
}
在本地一切都没有问题,但是通过jenkins发布到K8S的时候老是出现找不到包的问题,我也就没去深究,后来就用Hutool,这里我引入了Hutool工具包
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.4.3</version>
</dependency>
Hutool的Base64.encode在core这个包里面,所以只需要引入hutool-core即可。 引用非常简单
File file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "static/warnning.png");
String picBase64= cn.hutool.core.codec.Base64.encode(file);
但是事情似乎也并没有那么顺利,在本地运行没有问题,项目也是在K8S上运行起来了,但是获取不到文件
java.io.FileNotFoundException: class path resource [static/warnning.png] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/home/app.jar!/BOOT-INF/classes!/static/warnning.png
因为打包之后是jar文件,ResourceUtils.getFile无法访问jar中的目录,所以后来采用获取文件流的方式
ClassPathResource resource = new ClassPathResource("static/warnning.png");
String picBase64= cn.hutool.core.codec.Base64.encode(resource.getInputStream());
Hutool这个工具包确实不错,提供很多丰富的工具类,我用得比较多是就是StringUtil和DateUtil等,确实非常方便,大家有兴趣的可以去了解一下
现在各种工具类库以及Spring Boot的Starter,它们封装了许多实用的组件和工具类,为我们的开发提高了效率,这样有利有弊,当然,如果仅仅是为了解决工作中的问题,我可以借助更多简便的类库来完成,但是,我需要去了解其背后的原理和实现机制,不然,我们的能力仅仅停留在使用层面,这对我们来说是非常不利的。我们要知其然,更要知其所以然,开源的类库众多,我们需要花心思去学习它的源代码、学习大神们编程思想。
- 上一篇: mybatis缓存,从一个“灵异”事件说起
- 下一篇: 克隆Java(克隆人)
猜你喜欢
- 2024-11-12 基于SpringBoot 的CMS系统,拿去开发企业官网真香(附源码)
- 2024-11-12 解决JAVA压缩图片变色问题(java压缩图片至指定大小)
- 2024-11-12 J2eeFAST 开源平台(j2ee开发工具)
- 2024-11-12 Java项目中用它来代替一半的反射使用,爽到飞起!
- 2024-11-12 反射用不好真的会影响代码执行效率!
- 2024-11-12 基于AbstractProcessor扩展MapStruct自动生成实体映射工具类
- 2024-11-12 Java面试问题(一)—— java 基础(java面试问题大全及答案大全)
- 2024-11-12 一个轻量级的Java快速开发平台快速开发项目并交付「接私活利器」
- 2024-11-12 电商系统中的 ID 是如何生成的?(电商注册账号是什么)
- 2024-11-12 用了这两款插件,同事再也不说我代码写的烂了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)