将 Base64 编码的图像存储在数据库中是否明智?

dot*_*tty 5 php base64 android image

我正在制作一个 Android 应用程序,它拍摄照片并将图像(作为 base64 编码字符串)推送到 PHP 脚本,从这里我将在 MySQL 数据库中存储有关图像的数据。

将图像存储在数据库中是否明智(因为它作为 base64 字符串传递),将其转换回图像并将其存储在文件系统上会更好吗?

Den*_*ret 4

Base64 编码的图像占用太多空间(比二进制等价物多大约 33%)。

MySQL 提供了二进制格式(BLOB、MEDIUM_BLOB),请使用它们。

或者,大多数人更喜欢在数据库中仅存储文件系统将更有效地存储的文件的密钥,特别是当它是大图像时。从长远来看,这是我更喜欢的解决方案。我通常使用文件内容的 SHA1 哈希来形成文件的路径,这样我就没有双重存储,并且如果我愿意的话,可以很容易地从文件中检索记录(我使用三级文件树,首先两个级别分别由哈希的前两个字符和字符 3 和 4 组成,这样我就没有太多目录的直接子目录)。请注意,这是 git 存储的逻辑。

将它们存储在数据库中的优点是您可以更轻松地管理备份,特别是当您的项目很小时。数据库将为您提供缓存,但您的服务器和客户端也是如此,很难先验地决定哪个最快并且差异不会很大(我想您不会进行太多并发写入)。