将映像文件名存储在db中,将实际文件存储在服务器中vs将数据存储在数据库中并使用脚本加载映像。

时间:2015-11-12 06:07:08

标签: php mysql database image-processing blob

我正在开发一个小型社交媒体项目,其中一件我想要的东西是允许用户上传图片。我最初考虑将实际文件上传到图像目录,并将文件名保存在数据库中以便稍后调用。

但是,目录中可以包含多少文件是有限制的,文件大小可能是个问题。

因此,我没有采用这条路线,只是将使用php file_get_contents()函数的图像数据作为BLOB数据类型保存到数据库,然后编写另一个从图像数据中呈现图像的脚本。

由于图像数据的大小相对较小,因此这似乎是一个明智而且更好的途径。

我很担心,因为它看起来太方便了。我不应该这样做吗?我的意思是一个真正可行的理由以后会因为我走这条路而咬我的东西吗?

我希望这是发布此问题的正确位置。提前谢谢。

1 个答案:

答案 0 :(得分:0)

请注意,从数据库提供图像通常比从磁盘提供图像慢得多。它将启动一个PHP进程,创建数据库连接,查询数据库,传输它然后通过PHP推出,这将是不可缓存的。

将图像存储在数据库中有一些复杂性,但它确实可以更容易地进行排序和删除,如果需要考虑安全性,可以执行其他检查,并记录是否感兴趣。

请参阅https://stackoverflow.com/a/1638348/5509627了解实施情况。

如果只考虑磁盘空间,您可以考虑将图像存储在AWS S3或类似的中。