码上敲享录 > java入门知识分享 > java如何将图片转Base64编码字符串存储在数据库

java如何将图片转Base64编码字符串存储在数据库

上一章章节目录下一章 2025-05-23已有40人阅读 评论(0)

java如何将图片转Base64编码字符串存储在数据库


解决方法:

1、mysql数据库的表里新增一个字段image_data,使用TEXT或LONGTEXT类型:

CREATE TABLE IMAGES(

   id INT AUTO_INCREMENT PRIMARY KEY,

   image_name VARCHAR(255),

   image_data LONGTEXT,

   upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);


2、Java工具类:

以下工具类的main方法的base64Image变量就是图片转成的Base64编码字符串,直接用sql插入到表的image_data字段即可存储


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);

       } catch (IOException e) {

           e.printStackTrace();

       }

   }

}



3、前端页面显示,image_data字段的值直接在img标签的src属性中

<img src="image_data的值" alt="图片描述">

0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交