我应该使用什么将图像保存在数据库中。我必须使用什么类型在 PHP 和 MySQL 中存储和检索图像。
5 回答
经验法则是您不应该将图像存储在数据库中。Blob 可用,但非常糟糕。
您应该做的是将二进制文件存储在比数据库快很多倍的文件系统上,并且在数据库中只存储路径或链接或文件名,并让应用程序从路径加载图像。
这使您可以轻松地为静态文件实现 cdn 或 san 存储等内容。它甚至允许您使用 lighttpd 之类的东西来显示静态内容图像,而不是 apache。
https://blogs.oracle.com/manveen/entry/blob_vs_file_system_storage提供了更多信息,但网络上有大量关于 blob 缺点的统计数据和数据
使用BLOB
数据类型,这意味着二进制大对象
BLOB 可能比文件存储慢,但复制、备份和恢复单个数据库文件比管理/维护文件结构中的图像要容易得多。
我还建议将图像存储在他们自己的专用数据库中(将属性/标签信息存储在单独的数据库中)。
简单且优化的选项是将图像上传到服务器并将“图像的url”字符串存储在数据库中。
Incase,您只想存储实际的图像文件,然后使用 Blob 数据类型。
将图像存储在数据库中是一个非常糟糕的主意。数据库决定保存一些信息——不是图像或文件。为此,您有 HDD。
相反,您应该将图像保存在磁盘上并将其文件名保存在数据库中。像那样:
$name = uniqid();
file_put_contents($name.".png",$image_data);
mysql_query("INSERT INTO `images` (image) VALUES ('$name.png')") or die(mysql_error());
如果您真的坚持将图像保存在数据库中,请使用BLOB。