我可以在MySQL中存储图像吗?

2022-08-30 06:40:38

可能的重复项:
MySQL
中的图像 在 MySQL 中存储图像

我正在尝试开发一个网站,用户可以在其中上传他们的图像作为注册的一部分。我希望对于每个图像,都应该有一个用PHP创建的拇指(这并不难)。我想在数据库中保存拇指(因为它们非常小),我使用MySQL。(我不想将拇指另存为驱动器上的物理文件。
MySQL是否允许保存和检索图像数据,我该怎么做?如果它不支持图像数据,是否有任何免费的数据库可以支持?如果可以提供链接,我会很高兴。
谢谢。


答案 1

是的,您可以将图像存储在数据库中,但在我看来,这是不可取的,也不是一般的做法。

一般的做法是将映像存储在文件系统上的目录中,并将对映像的引用存储在数据库中。例如,图像的路径,图像名称等。或者,您甚至可以将图像存储在内容交付网络 (CDN) 或跨越某些大范围物理区域的众多主机上,并存储引用以访问数据库中的这些资源。

图像可以变得相当大,大于1MB。因此,如果图像位于不同的主机上,则将图像存储在数据库中可能会给数据库以及数据库与Web服务器之间的网络带来不必要的负载。

我曾在初创公司,中型公司和拥有40万多名员工的大型技术公司工作过。在我13年的专业经验中,我从未见过有人将图像存储在数据库中。我这样说是为了支持这种说法,这是一种不寻常的做法。


答案 2

您需要保存为blob,mysql中的LONGBLOB数据类型将起作用。

前任:

CREATE TABLE 'test'.'pic' (
    'idpic' INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    'caption' VARCHAR(45) NOT NULL,
    'img' LONGBLOB NOT NULL,
  PRIMARY KEY ('idpic')
)

正如其他人所说,这是一种不好的做法,但它是可以做到的。但是,不确定此代码是否能很好地扩展。


推荐