当前位置: 首页 > 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.xdnf.cn/news/321697.html

相关文章:

  • redis端口漏洞未授权访问漏洞
  • Rust 中 Arc 的深度分析:从原理到性能优化实践
  • 2020年NCA CCF-C,改进灰狼算法RSMGWO+大规模函数优化,深度解析+性能实测
  • 鸿蒙开发——4.ArkTS快速入门指南
  • 我的世界云端服务器具体是指什么?
  • Laravel 12 实现验证码功能
  • 代码随想录算法训练营第三十四天
  • WordPress个人博客搭建(三):WordPress网站优化
  • RabbitMq学习(第一天)
  • 5.7 react 路由
  • Go语言八股之并发详解
  • 管家婆实用贴-如何在Excel中清除空格
  • Go语言——error、panic
  • 解决0x0000011b共享打印机无法连接!
  • 泛型设计模式实践
  • 初始图形学(7)
  • 2025-05-07-FFmpeg视频裁剪(尺寸调整,画面比例不变)
  • 系统思考:教育焦虑恶性循环分析
  • C语言初阶:数组
  • DeepSeek全域智能革命:从量子纠缠到星际文明的认知跃迁引言:认知边界的坍缩与重构
  • 解决leetcode第3537题填充特殊网格
  • CSS详细学习笔记
  • eclipse常用快捷键
  • Jmeter进行http接口测试
  • 使用VSCode在Windows 11上编译运行项目
  • 005 权限的理解
  • Linux上将conda环境VLLM服务注册为开机自启
  • Java 常用的 ORM框架(对象关系映射)
  • 企业级AI革命!私有化部署开源大模型:数据安全+自主可控,打造专属智能引擎
  • Ubuntu20.04安装使用ROS-PlotJuggler