- 此问题在此处已有答案**:
11年前关闭了。
- 可能重复:**
Images in MySQL
Storing images in MySQL
我正在尝试开发一个网站,用户可以上传他们的图片作为注册的一部分。我希望每张图片都有一个用PHP创建的拇指(这并不困难)。我希望将拇指(因为它们非常小)保存在数据库中,我使用MySQL。(我不希望将拇指作为物理文件保存在驱动器上。)
MySQL允许保存和检索图像数据吗?我该怎么做?如果它不支持图像数据,有没有免费的数据库?如果能提供链接,我会很高兴。
谢谢。
4条答案
按热度按时间lc8prwob1#
是的,你可以在数据库中存储图像,但在我看来这是不可取的,这不是一般的做法。
一般做法是将映像存储在文件系统上的目录中,并将对映像的引用存储在数据库中,例如映像的路径、映像名称等。或者,您甚至可以将映像存储在内容交付网络(CDN)或跨越某个巨大物理地域的许多主机上,并将访问这些资源的引用存储在数据库中。
图像可能会变得很大,超过1MB。因此,在数据库中存储图像可能会给数据库以及数据库和Web服务器之间的网络带来不必要的负载(如果它们位于不同的主机上)。
我曾在初创公司、中型公司和大型科技公司工作过,员工超过40万人。在我13年的专业经验中,我从未见过有人在数据库中存储图像。我这样说是为了支持这一说法,这是一种罕见的做法。
yh2wf1be2#
你需要保存为一个blob,在mysql中的LONGBLOB数据类型可以工作。
例如:
正如其他人所说,这是一个糟糕的做法,但它可以做到。但不确定这段代码是否可以很好地伸缩。
xtfmy6hx3#
你可以在MySQL中以blob的形式存储图像,但是,这有几个问题:
相反,请考虑更新表以添加image_path字段。例如:
然后将图像存储在磁盘上,并使用图像路径更新表。当需要使用图像时,使用指定的路径从磁盘中检索它们。
这种方法的有利的副作用是图像不必存储在盘上;您可以很容易地存储URL而不是图像路径,并从任何连接到Internet的位置检索图像。
qqrboqgw4#
您需要将图像作为BLOB存储在数据库中。
您将需要在表中创建一个名为PHOTO的列,并将其设置为mediumblob。
然后你会想从表单中得到它,如下所示:
然后将该列设置为$data中的值。
当然,这是不好的做法,您可能希望使用与用户帐户对应的名称将文件存储在系统上。