news 2026/4/22 23:11:18

BASE64格式图片储存到本地磁盘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BASE64格式图片储存到本地磁盘

使用高拍仪拍照,生成的图片是base64格式的图片,储存到数据库的时候占用的内存太大,所以将base64格式储存到本地。
下面代码使用的是储存到本地的D:\upload\images\2026\2\2 这个是开发环境,如果是放到服务器的话,将D:\upload替换成服务器的磁盘中;
下面的是代码:

package org.jeecg.modules.business.utils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.time.LocalDateTime; import java.util.Base64; /** * 将Base64格式图片保存到本地磁盘的工具类 */ @Slf4j @Component public class Base64ImageSaver { // 目标存储目录 D:/upload @Value(value = "${jeecg.path.upload}") private String uploadPath; /** * 将Base64图片保存到本地 * * @param base64Image Base64格式的图片字符串(可带前缀) * @param type 传过来的照片类型 * @return 保存成功返回文件完整路径,失败返回null */ public String saveBase64ImageToLocal(String base64Image, Integer type) { // 1. 校验入参 if (base64Image == null || base64Image.isEmpty() || type == null ) { log.error("Base64字符串或文件名不能为空"); return null; } String newFileName = ""; if (type == 999){ newFileName = "办理人照片_"+System.currentTimeMillis(); }else{ newFileName = "_"+System.currentTimeMillis(); } // 2. 拼接日期目录路径(优化路径拼接,避免手动拼接斜杠) LocalDateTime nowDateTime = LocalDateTime.now(); String datePath = String.format("images/%d/%d/%d", nowDateTime.getYear(), nowDateTime.getMonthValue(), nowDateTime.getDayOfMonth()); // 完整的目录路径 File dirFile = new File(uploadPath, datePath); // 创建目录(递归创建,无需判断是否存在,mkdirs()已处理) if (!dirFile.exists()) { boolean mkdirSuccess = dirFile.mkdirs(); if (!mkdirSuccess) { log.error("创建目录失败:{}", dirFile.getAbsolutePath()); return null; } } // 3. 处理Base64前缀,提取纯编码数据 String pureBase64Data = base64Image; if (base64Image.contains(";base64,")) { pureBase64Data = base64Image.split(";base64,")[1]; } // 4. 拼接完整的文件路径(目录+文件名) File targetFile = new File(dirFile, newFileName+".png"); // 5. 解码并写入文件 try (FileOutputStream outputStream = new FileOutputStream(targetFile)) { // 解码Base64为字节数组 byte[] imageBytes = Base64.getDecoder().decode(pureBase64Data); // 写入文件 outputStream.write(imageBytes); outputStream.flush(); String filePath = targetFile.getAbsolutePath(); log.info("图片保存成功:{}", filePath); String result = filePath.replaceFirst("^.*upload\\\\", "").replace("\\", "/"); return result; } catch (IllegalArgumentException e) { log.error("Base64解码失败:{}", e.getMessage()); return null; } catch (IOException e) { log.error("文件写入失败:{},路径:{}", e.getMessage(), targetFile.getAbsolutePath()); return null; } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 23:08:51

AI原生应用领域多租户技术的创新实践

AI原生应用领域多租户技术的创新实践 关键词:AI原生应用、多租户技术、资源隔离、动态调度、数据隐私 摘要:本文围绕AI原生应用中的多租户技术展开,从核心概念到实战落地,结合生活案例与技术细节,深入解析多租户技术如…

作者头像 李华
网站建设 2026/4/22 20:13:31

555555

555555

作者头像 李华
网站建设 2026/4/22 19:39:43

社会网络仿真软件:UCINET_(8).结构洞与社会资本分析

结构洞与社会资本分析 1. 结构洞的定义与重要性 结构洞(Structural Holes)是指在社会网络中,两个或多个节点之间没有直接的连接,但通过一个中介节点间接相连。这些中介节点在信息、资源和机会的传递中扮演着关键角色&#xff0c…

作者头像 李华
网站建设 2026/4/22 16:05:38

宏智树 AI 太懂论文党!零代码搞定数据分析,小白也能写硬核实证

作为深耕论文写作科普的博主,每天都能收到粉丝的 “数据分析崩溃求助”:“Stata 代码看半天看不懂,实证章节卡了 1 周”“面板数据不知道选什么模型,怕选错题全白费”“回归结果出来了,却不会用学术语言解读”。其实数…

作者头像 李华
网站建设 2026/4/21 10:11:45

SSM毕设项目推荐-基于Java+SSM的生产设备信息管理系统的设计与实现基于ssm的生产设备信息管理系统的设计与实现【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华