我可以在MYSQL数据库表中插入图像吗?

时间:2010-05-18 14:32:41

标签: mysql phpmyadmin

有没有办法将pics(不是url,pic)插入到用phpmyadmin制作的MYSQL表中? 如果有什么时候我想得到那张照片并将其插入页面,我该怎么办? :)

3 个答案:

答案 0 :(得分:8)

可以(使用BLOB类型)但是将图像存储在文件系统中并且只是将图像的路径存储在数据库中几乎总是更好。

有几个原因让我失望:

  1. BLOB会增加数据库的大小,使备份和恢复可能更加困难(尽管有些人可能认为它更容易,因为你只需要备份数据库而不是数据库加上一堆文件)。

  2. 如果您使用select *的惰性代码,则将数据存储为BLOB可能会导致性能问题。

  3. 从文件系统提供图像将比从数据库提供图像更快,并减少数据库服务器上的负载。

  4. 您可以灵活地处理图像的放置位置 - 例如,如果您希望将来将它们移动到CDN。

答案 1 :(得分:1)

对于静态资源,如背景图片或菜单图标等,我从未见过有人将它们存储在数据库中。对于动态内容,例如用户上传的图像,情况并不少见。

以下是在数据库中存储图像的一些专业知识和内容。

<强>优点:

  • 技术上与其他数据没有什么不同。更多,并采用二进制格式。
  • 图像与数据库的其余部分一起备份。
  • 不要失去同步(数据库中的路径指向不存在的图像,或数据库中未引用的图像)

<强>缺点:

  • 存储单个文件正是文件系统的目标,因此它很可能会更好地扩展。
  • 更容易手动调试/查看图像
  • Web服务器可以直接提供图像(不需要额外的代码来从数据库加载内容并提供适当的mime类型等)。

我个人总是发现这些好处超过了缺点,并且总是在数据库中拥有图像(以及mime类型)。我从来没有注意到任何缺点或性能问题,但另一方面我从来没有在大型网站上工作。

相关问题和资源:

答案 2 :(得分:0)

如果您经常获取图像,最好将其存储为文件并保存文件路径,以便在获取图像时保存数据库运行。

否则,将图像文件的内容存储在BLOB列中,然后在HTML中打印<img src="image.php?id=1234" />

image.php应在数据库中查找ID为1234的图像,获取该BLOB列的内容,并在提供正确的HTTP标头后打印它,例如header('Content-type: image/gif');

但是说真的。只需保存图像文件即可。我保证,这不是一种痛苦。