【发布时间】:2011-01-27 13:34:30
【问题描述】:
将图像作为 blob 存储在数据库中与仅将文件名存储在数据库中的优点和缺点是什么。
我在 MySQL 中使用 PHP(CodeIgniter)。
我知道这个问题是主观的,但有客户问我这个问题,我无法给出一个好的答案。
【问题讨论】:
标签: php codeigniter file-upload
将图像作为 blob 存储在数据库中与仅将文件名存储在数据库中的优点和缺点是什么。
我在 MySQL 中使用 PHP(CodeIgniter)。
我知道这个问题是主观的,但有客户问我这个问题,我无法给出一个好的答案。
【问题讨论】:
标签: php codeigniter file-upload
我一般会这么说:
这意味着我几乎总是将图像/文件存储在文件系统中,并且只存储文件的名称(可能还有大小和内容类型——这总是有用的)数据库。
想一想,这个问题可能是重复的......哦,是的,它实际上是;至少看到那些问题+答案:
【讨论】:
我怀疑您的客户是否有足够的经验来判断答案。
客户曾经要求我将图像严格存储到数据库中。经过一番调查,我发现他们只是想“在服务器端存储图像”,因为他们之前有一个 MS Access 数据库,它可以选择将图像存储在数据库中还是仅链接到图像,而图像本身留在用户硬盘上,经常不可用。
至于您的问题,我怀疑图像与关系模型有任何关系。您不能根据 blob 内容对其他行进行排序、过滤和关联。虽然您必须做很多事情来支持数据库中的图像 - 专用脚本来显示、模拟条件获取等。 我知道,这个功能是存在的。但这更像是一种追随时尚的尝试,而不是真正的需求,尤其是在 Web 开发中,图像是通过单独请求来请求的。
【讨论】:
我更喜欢在上传时重命名图像文件并将它们存储到与他自己的父级(用户、产品)相关的数据库行中......然后将它们上传到 3 个文件夹中:
/uploads
/img
/products
/small
/medium
/xxl
在将它们移动到这些目录之前,将它们调整为小 (50x50)、中 (90x90)、xxl(原始尺寸)。
如果您需要 SEO 图像,您可以存储它们,例如:
id | product | image
1 book 1-book.png
因此您将在同一个图像文件中获得 id 和产品名称。
或者你甚至可以只存储
id | product | image
1 book 1.png
那么附加 src 路径很简单:
/*Config file*/
$config['base_static_products_url'] = 'uploads/img/products/';
/*View file*/
<img src="<?php echo base_url().$this->config->config['base_static_products_url'].'/small/'.$row->image ?>" alt=""/>
OR (no SEO)
<img src="<?php echo base_url().$this->config->config['base_static_products_url'].'/small/'.$row->id.'.png' ?>" alt=""/>
【讨论】: