当前位置: 首页 > news >正文

图片文件转base64存储在数据库

以下是将文件转换为Base64编码字符串的Java代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Base64;public class ImageToBase64 {/*** 将图片文件转换为Base64字符串* @param filePath 图片文件路径* @return 带有MIME类型的Base64字符串,可直接用于img标签的src属性* @throws IOException*/public static String convertImageToBase64(String filePath) throws IOException {File file = new File(filePath);return convertImageToBase64(file);}/*** 将图片文件转换为Base64字符串* @param file 图片文件对象* @return 带有MIME类型的Base64字符串,可直接用于img标签的src属性* @throws IOException*/public static String convertImageToBase64(File file) throws IOException {// 获取文件扩展名,用于确定MIME类型String fileName = file.getName();String extension = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();String mimeType;// 根据文件扩展名设置MIME类型switch (extension) {case "jpg":case "jpeg":mimeType = "image/jpeg";break;case "png":mimeType = "image/png";break;case "gif":mimeType = "image/gif";break;case "bmp":mimeType = "image/bmp";break;case "webp":mimeType = "image/webp";break;default:mimeType = "application/octet-stream";}try (FileInputStream fileInputStream = new FileInputStream(file)) {byte[] fileBytes = new byte[(int) file.length()];fileInputStream.read(fileBytes);String base64Content = Base64.getEncoder().encodeToString(fileBytes);// 构建可直接用于img标签src属性的Base64字符串return "data:" + mimeType + ";base64," + base64Content;}}public static void main(String[] args) {try {String imagePath = "path/to/your/image.jpg";String base64Image = convertImageToBase64(imagePath);// 存储到数据库// saveToDatabase(base64Image);System.out.println("Base64 Image (truncated): " + base64Image.substring(0, 50) + "...");// 前端可以直接使用这个字符串作为img的src// <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..."/>} catch (IOException e) {e.printStackTrace();}}
}

数据库设计建议,在数据库中存储Base64图片时,建议使用TEXT或LONGTEXT类型字段:

CREATE TABLE images (id INT AUTO_INCREMENT PRIMARY KEY,image_name VARCHAR(255),image_data LONGTEXT,  -- 存储Base64编码的图片upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
http://www.dtcms.com/a/175644.html

相关文章:

  • 【Python Number(数字)】
  • 性能优化-初识(C++)
  • 自定义Widget开发:手势交互处理
  • ES6入门---第三单元 模块五:Map和WeakMap
  • CentOS 安装 Zellij 终端复用器教程
  • WHAT - Rust 静态派发(Static Dispatch)和 动态派发(Dynamic Dispatch)
  • 【MongoDB篇】MongoDB的分片操作!
  • HTB - Eureka记录
  • 如何使用极狐GitLab 软件包仓库功能托管 maven?
  • 【JS逆向基础】WEB自动化
  • 给小白的AI Agent 基本技术点分析与讲解
  • Node.js 的 child_process 模块详解
  • IIS配置SSL
  • Flowchart 流程图的基本用法
  • 新能源汽车中的NVM计时与RTC计时:区别与应用详解
  • [ubuntu]fatal error: Eigen/Core: No such file or directory
  • 从一次被抄袭经历谈起:iOS App 安全保护实战
  • 声波解码器:当40kHz遇见AIoT时代——超声波传感器的“隐形智慧”革命
  • ETL介绍
  • C++ -- 哈希扩展
  • C++从入门到实战(十二)详细讲解C++如何实现内存管理
  • Java01-初识Java
  • JVM局部变量表和操作数栈的内存布局
  • 泛型设计模式实践
  • 从人体姿态到机械臂轨迹:基于深度学习的Kinova远程操控系统架构解析
  • 今年中国新能源汽车销量已破400万辆 大增42%
  • Rust 中 Arc 的深度分析:从原理到性能优化实践
  • PPT 制作难题迎刃而解,影刀 RPA 开启自动化创作时代
  • 大模型系列(五)--- GPT3: Language Models are Few-Shot Learners
  • 神经网络语言模型(NNLM)的原理与实现