2010-05-18 84 views
6

有没有一种方法可以将图片(不是url,图片)插入到使用phpmyadmin创建的MYSQL表中? ,如果有我想要获取该图片并将其插入页面中,我该怎么办? :)我可以在MYSQL数据库表中插入图像吗?

+1

使用BLOB类型,它会插入图像为0和1的 – Karthik 2010-05-18 14:39:12

+1

并请务必保存(并响应)与适当的mime类型相对应的那些0和1 ... – aioobe 2010-05-18 15:12:11

回答

7

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

几个原因把我的头顶部:

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

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

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

  4. 您在服务图像的位置获得一些灵活性 - 例如,如果您希望将它们移到CDN中,

0

如果你要经常读取的图像,你可能会更好把它作为一个文件并保存它的路径,为您节省上获取的图像数据库运行。

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

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

但是严重。只需保存图像文件。我保证,这种痛苦少得多。

0

当谈到静态资源,如背景图像或菜单图标等,我从来没有见过任何人将它们存储在数据库中。对于动态内容,例如用户上传的图像,这并不罕见。

下面是一些在数据库中存储图像的pro和con。

优点:

  • 这在技术上是没有与其他数据不同。更多,二进制格式。
  • 图像与数据库的其余部分一起备份。
  • 不同步的(具有在数据库中指向一个不存在的图像中的数据库的路径,或未被引用的图像)

缺点的无头部疼痛:

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

就我个人而言,我总是发现优点大于缺点,并且始终在数据库中包含图像(以及mime类型)。我从来没有注意到任何缺点或性能问题,但另一方面,我从来没有在非常大的网站上工作过。

相关的问题和资源:

相关问题