可能重复:
MySQL中的图像在MySQL中
存储图像
我正在尝试开发一个网站,用户上传他们的图像作为注册的一部分.我希望每个图像都应该有一个用PHP创建的拇指(这并不困难).我想在数据库中保存拇指(因为它们非常小),我使用MySQL.(我不想将拇指保存为驱动器上的物理文件.)
MySQL是否允许保存和检索图像数据,我该如何处理?如果它不支持图像数据,是否有任何免费的数据库呢?如果可以提供链接,我会很高兴.
谢谢.
Fin*_*orm 239
是的,您可以将图像存储在数据库中,但在我看来这是不可取的,这不是一般的做法.
通常的做法是将图像存储在文件系统上的目录中,并存储对数据库中图像的引用.例如,图像的路径,图像名称等.或者,您甚至可以将图像存储在内容传送网络(CDN)或跨越一大片物理区域的众多主机上,并存储引用以访问数据库中的这些资源. .
图像可以变得非常大,大于1MB.因此,将数据存储在数据库中可能会对数据库和数据库与Web服务器之间的网络造成不必要的负担,如果它们位于不同的主机上.
我曾在拥有400,000多名员工的创业公司,中型公司和大型科技公司工作过.在我13年的专业经验中,我从未见过有人将图像存储在数据库中.我这样说是为了支持这种说法,这是一种不寻常的做法.
dev*_*oug 38
你需要保存为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')
)
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,这是一种不好的做法,但可以做到.但是不确定这段代码是否可以很好地扩展.
Geo*_*ins 14
您可以将图像存储在MySQL中作为blob.但是,由于以下几个原因,这是有问题的:
相反,请考虑更新表以添加image_path字段.例如:
ALTER TABLE `your_table`
ADD COLUMN `image_path` varchar(1024)
Run Code Online (Sandbox Code Playgroud)
然后将图像存储在磁盘上,并使用图像路径更新表.需要使用图像时,使用指定的路径从磁盘检索图像.
这种方法的一个有利的副作用是图像不一定存储在磁盘上; 您可以轻松存储URL而不是图像路径,并从任何连接互联网的位置检索图像.
小智 5
您需要将图像作为BLOB存储在数据库中.
您需要在表中创建一个名为PHOTO的列,并将其设置为mediumblob.
那么你会希望从表单中得到它:
$data = file_get_contents($_FILES['photo']['tmp_name']);
Run Code Online (Sandbox Code Playgroud)
然后将列设置为$ data中的值.
当然,这是不好的做法,您可能希望将文件存储在系统中,其名称与用户帐户相对应.
| 归档时间: |
|
| 查看次数: |
298133 次 |
| 最近记录: |