当前位置: 首页 > 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
);

相关文章:

  • 【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++ -- 哈希扩展
  • 竞彩湃|德甲欧冠资格竞争白热化,伯恩茅斯主场迎恶战
  • 伤员回归新援融入,海港逆转海牛重回争冠集团
  • 韩国前国务总理韩德洙加入国民力量党
  • 新修订的《婚姻登记条例》明起施行,领证不用户口本了
  • 中日有关部门就日本水产品输华问题进行第三次谈判,外交部回应
  • 鸿蒙电脑正式亮相,五年布局积累超2700项核心专利