我正在每个帖子上创建一个包含精选图片的博客。我有两难,我不确定如何处理我的图像数据...
我应该使用BLOB将图像数据插入我的MYSQL数据库吗?
或者我应该创建一个上传器,将目录放入用户图像文件夹并以这种方式上传照片...然后在添加博客文章时直接在图像字段中引用它?
有标准化的方式吗?
亲切的问候, 亚当
答案 0 :(得分:3)
将文件上传到服务器并将文件的位置保存在数据库中。数据库和HTTP守护程序的压力较小,在提供图像方面比MySQL更好。
答案 1 :(得分:0)
一般方法不是将文件存储在DB中,除非您了解为什么需要将其存储在那里。因此,由于您不确定,将它们存储在上传文件夹中要简单得多。
但是,如果您决定需要在DB中存储文件(无论是图像还是其他文件),您必须声明BLOB字段,然后使用一些支持BLOB的DB机制保存它。 'PHP's MySQLi extension: Storing and retrieving blobs'是如何制作的一个很好的例子
答案 2 :(得分:0)
您应该将图像存储在文件夹中。点击下面的链接,您可以从中获知如何裁剪不同大小的图像并将图像名称存储到数据库表中:
答案 3 :(得分:0)
将图像数据转换为base64。这可以在PHP中完成:
<?
$image=file_get_contents("image.png");
$image=base64_encode($image);
?>
将图像存储在数据库中是安全图像的好主意。
答案 4 :(得分:0)
始终将图像,音乐文件等存储在磁盘上的系统文件中,然后将这些网址存储在数据库中。这将使它
1)更快
2)更容易配置安全设置
3)以任何我能想象的方式更好
<强>缺点强>
如果文件系统已损坏,您将很难恢复。
您也可以使用第三方图片托管网站,您可以使用Amazon S3或Mosso Cloud Files。
文件系统问题是难以扩展。
Facebook使用cassandra
来存储图片。
由于它是博客,您可以将图像存储在文件系统中。
答案 5 :(得分:0)
两者都是有效的方法。
他们有不同的优点/缺点。
将其存储在数据库中意味着您需要添加额外的代码以将图像更改为适合INSERT / UPDATE语句的表示形式(base64是一种方法,需要等效的解码,但您可以使用mysql_real_escape_string() )。虽然您无法直接查询图像(除了查找完全匹配),但与查找数据库中的路径然后检索文件相比,它可能会减少检索数据所需的查找和I / O操作次数。
与设置数据库复制和文件系统(如果在多个节点上运行)相比,设置数据库复制要简单得多。还有一个问题是保持文件系统和数据库备份同步。
OTOH,使用文件系统可以使您的数据表更小,因此可以更快地从中检索记录。
将目录放入用户图像文件夹
您当然不希望允许用户将内容直接上传到您的网络服务器的文档树中 - 无论您采用哪种路线,数据都应存储在网络服务器无法直接访问但您的代码可访问的位置。 / p>