在 MYSQL 数据库中存储 base64 字符串的最佳方法是啥?

Posted

技术标签:

【中文标题】在 MYSQL 数据库中存储 base64 字符串的最佳方法是啥?【英文标题】:What is the best way to store base64 string in MYSQL database?在 MYSQL 数据库中存储 base64 字符串的最佳方法是什么? 【发布时间】:2017-03-14 11:01:45 【问题描述】:

我正在开发一个小型 Web 应用程序,我必须将用户的图像存储到 mysql 数据库中。我是hibernate框架的新手,我很震惊。我已将图像转换为 Base64 字符串。谁能建议我如何使用休眠将此字符串存储到数据库中。

【问题讨论】:

你有理由不使用 blob 吗?codejava.net/frameworks/hibernate/… 【参考方案1】:

除非您可以为 Base64 String 定义最大大小,否则存储图像内容的最佳方法不是将其存储为 Base64 String 而是存储为字节数组(因为它可以要大)只需使用 JPA 注释 @Lob(代表大对象)和 JPA 注释 @Basic(fetch = FetchType.LAZY) 定义您的字段,以防您想懒惰地获取它,如下所示:

@Lob
@Basic(fetch = FetchType.LAZY)
private byte[] image;

【讨论】:

【参考方案2】:

我推荐以下

@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "file64", columnDefinition = "LONGBLOB")
private byte[] file64;

LONGBLOB 允许保存更大的内容。

【讨论】:

以上是关于在 MYSQL 数据库中存储 base64 字符串的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

当我在Mysql存储Base64数据时,崩了!!

base64 在执行 WHERE 之前解码 mysql 列

在 MySQL 中存储 Base64 PNG

MySQL - Base64 vs BLOB

mysql使用blob存储base64格式文件

如何将存储在数据库中的 Base64 字符串集合转换为普通图像存储在本地目录中