2011-08-17 44 views
2

我正在每篇文章上用精选图片创建博客。我有一个困境,我不确定如何处理我的图像数据...PHP&MYSQL - 我应该怎样处理我的图像数据?

我应该使用BLOB插入图像数据到我的MYSQL数据库吗?

或者我应该创建一个上传器,将目录放入用户图像文件夹并上传照片,然后直接在图像字段中添加博客文章时引用它?

有没有标准化的方法?

亲切的问候, 亚当

回答

3

文件上传到服务器,并保存在你的数据库文件的位置。减少DB和HTTP守护程序对服务映像比MySQL更好。

0

一般的方法不是将文件存储在数据库中,除非您明白为什么需要将文件存储在数据库中。所以,由于您不确定,因此将它们存储在上传文件夹中非常简单。

但是,如果您决定需要在数据库中存储文件(无论图像或其他文件),您必须声明BLOB字段,然后使用某些支持BLOB的DB机制保存它。 'PHP's MySQLi extension: Storing and retrieving blobs'是一个很好的例子,它可以如何制作

0

的图像数据转换为base64。这可以在PHP中做到:

<? $image=file_get_contents("image.png"); $image=base64_encode($image); ?>

在DB存储图像是安全图像是个好主意。

0

总是将图像,音乐文件等存储在磁盘上的系统文件中,然后将url存储到数据库中。这将使

1)快

2)更容易配置安全设置以任何方式

3)更好,我可以想像

缺点
如果文件系统被破坏,那么您将很难恢复。

您也可以使用第三方图像托管网站,您可以使用Amazon S3或Mosso Cloud Files。

文件系统的问题很难扩展。

Facebook使用cassandra来存储图像。

由于它是博客,您可以将图像存储在文件系统中。

0

两者都是有效的方法。

他们有不同的优点/缺点。

将其存储在数据库中意味着您需要添加额外的代码来将图像更改为适合INSERT/UPDATE语句的表示形式(base64是一种方法,并且需要等效的解码,但您可以只使用mysql_real_escape_string( ))。尽管无法直接查询图像(除了查找完全匹配),但与查找数据库中的路径然后检索文件相比,它可以减少检索数据所需的查找和I/O操作的数量。

与设置数据库复制和文件系统复制相比,如果您在多个节点上运行,设置数据库的复制也简单得多。还有一个问题就是让文件系统和数据库备份保持同步。

OTOH,使用文件系统使您的数据表更小,因此更快地检索记录。

这使得目录到用户的图像文件夹

你肯定不想让用户直接上传内容到你的网站服务器文档树 - 无论你采取哪条路线,该数据应存储在网络服务器不可直接访问的位置,但可以通过您的代码访问。

相关问题