开发者社区 问答 正文

将图像直接存储在数据库中还是作为base64数据存储?

在数据库中存储图像的常用方法是base64在存储数据之前将图像转换为数据。此过程将使大小增加33%。或者,可以将图像直接存储为BLOB;例如:

$image = new Imagick("image.jpg"); $data = $image->getImageBlob(); $data = $mysqli->real_escape_string($data); $mysqli->query("INSERT INTO images (data) VALUES ('$data')"); 然后用

使用后一种方法,我们可以节省1/3的存储空间。为什么像base64在MySQL数据库中那样存储图像更常见?

更新:关于将图像存储在数据库中的优点和缺点的争论很多,大多数人认为这不是一种实用的方法。无论如何,在这里我假设我们将图像存储在数据库中,并讨论了这样做的最佳方法。

展开
收起
保持可爱mmm 2020-05-11 11:07:47 1290 分享 版权
1 条回答
写回答
取消 提交回答
  • Pro base64:您处理的编码表示形式是一个非常安全的字符串。它既不包含控制字符也不包含引号。后一点有助于防止SQL注入尝试。我不希望将值添加到“手编码” SQL查询字符串中就不会有任何问题。

    Pro BLOB:数据库管理器软件知道所需的数据类型。它可以为此进行优化。如果将base64存储在TEXT字段中,它可能会尝试为其构建一些索引或其他数据结构,这对于“真实”文本数据确实非常有用,但毫无意义,并且浪费了图像数据的时间和空间。它以字节数表示时较小。来源:stack overflow

    2020-05-11 11:08:00
    赞同 展开评论