Java怎么把一张图片直接存到数据库里?

( Java面试题 )

通常,应该把文件放在文件系统(硬盘)上,在数据库里只存储图片文件的路径 。但是,如果想 图文文件直接存在数据库里,怎么实现呢?

由于图片数据较大,在MySQL中直接存储的话,应该选则 BLOB 类型的字段。

( 以下假设图片的大小为 100K 以下 , 太大的不适合 )

 

1 将字段类型设为 mediumtext

此字段可用于存储 <16MB 的文本

 

2 读取文件数据,转成Hex 或 base64

关于 Hex 和 base64 编码,参考 Java学习指南 - 项目应用篇,数据的编码

将编码后的文本存到数据库中即可

// 写入过程,伪代码表示

byte[]  buffer = new byte[fileSize] ;

fileStream.read ( buffer)

String base64str =  base64Encode ( buffer )  将数据转成base64字符串

String sql = "update YOUR_TABLE set  thumb='%s' WHERE  ... "  拼凑一个SQL

执行 sql  ...

 

// 读取过程,伪代码表示

String sql = ....

String base64str = ... 从数据库中取读该列的值

byte[] imageData = base64Decode ( base64str ) 把 base64字符串转回byte[]

file.write ( imageData )

再次强调,图片还是要小一点,如果太大是真得不适合存到数据库的。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将Flowable保存到数据库中,你可以按照以下步骤进行操作: 1. 创建一个与数据库表对应的Java类,用于储Flowable的数据。 2. 在该类中,定义Flowable需要保的字段,例如ID、名称、描述等。 3. 使用数据库连接工具,如JDBC或者ORM框架(如MyBatis、Hibernate等),建立与数据库的连接。 4. 在代码中获取Flowable的数据,并将其储到创建的Java类对象中。 5. 使用数据库连接工具,将Java类对象保存到数据库中。 下面是一个简单的示例代码,演示了如何保Flowable到数据库中: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class FlowableDao { // 数据库连接参数 private static final String URL = "jdbc:mysql://localhost:3306/mydatabase"; private static final String USERNAME = "username"; private static final String PASSWORD = "password"; public void saveFlowable(Flowable flowable) { try { // 建立数据库连接 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); // 准备SQL语句 String sql = "INSERT INTO flowables (id, name, description) VALUES (?, ?, ?)"; PreparedStatement stmt = conn.prepareStatement(sql); // 设置参数 stmt.setString(1, flowable.getId()); stmt.setString(2, flowable.getName()); stmt.setString(3, flowable.getDescription()); // 执行SQL语句 stmt.executeUpdate(); // 关闭连接和语句 stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上述示例中,我们创建了一个名为FlowableDao的类,其中的saveFlowable方法用于保Flowable到数据库中。你可以根据实际需求,进行适当的修改和扩展。记得将URL、USERNAME和PASSWORD更改为你自己的数据库连接参数。 希望这对你有帮助!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿发你好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值