将图像直接存储在数据库中还是作为base64数据存储?
本教程将介绍将图像直接存储在数据库中还是作为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')");
然后用
<img src="data:image/jpeg;base64,' . base64_encode($data) . '" />
使用后一种方法,我们节省了 1/3 的存储空间.为什么在 MySQL 数据库中将图像存储为 base64
更常见?
更新:关于将图像存储在数据库中的优缺点有很多争论,大多数人认为这不是一种实用的方法.无论怎么,在这里我假设我们将图像存储在数据库中,并讨论这样做的最佳方法.
推荐答案
Pro base64:您处理的编码表示是一个非常安全的字符串.它既不包含控制字符也不包含引号.后一点有助于防止 SQL 注入尝试.我不认为将值添加到手动编码"SQL 查询字符串会出现任何问题.
Pro BLOB:数据库管理器软件知道它所期望的数据类型.它可以为此进行优化.如果请问 base64 存储在 TEXT 字段中,它可能会尝试为其构建一些索引或其他数据结构,这对于真实"文本数据来说非常好和有用,但对于图像数据毫无意义并且浪费时间和空间.它是较小的,如字节数,表示形式.
好了关于将图像直接存储在数据库中还是作为base64数据存储?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。