如何将图像插入数据库,并从数据库中获取图像,然后使用PHP进行显示?

如何将图像插入数据库,并从数据库中获取图像,然后使用PHP进行显示?,php,mysql,forms,post,file-upload,Php,Mysql,Forms,Post,File Upload,如何将图像插入数据库,并从数据库中获取图像并使用PHP显示 我已经尝试过很多次了,因为我是php的初学者,请帮助我。您可以使用BLOB字段存储二进制数据,但请注意性能可能适中。将映像作为文件存储在磁盘上,并且只将文件名存储在数据库中,这样做几乎总是更好的。要从数据库中获取图像,需要将整个图像读入内存,这是一种资源浪费。最好将图像处理卸载到web服务器上,该服务器可以将图像流式传输到客户端。虽然这不是推荐的做法,但如果您决心这样做,网上有一堆教程将指导您如何做到这一点: 您可以创建如下表

如何将图像插入数据库,并从数据库中获取图像并使用PHP显示


我已经尝试过很多次了,因为我是php的初学者,请帮助我。

您可以使用BLOB字段存储二进制数据,但请注意性能可能适中。将映像作为文件存储在磁盘上,并且只将文件名存储在数据库中,这样做几乎总是更好的。要从数据库中获取图像,需要将整个图像读入内存,这是一种资源浪费。最好将图像处理卸载到web服务器上,该服务器可以将图像流式传输到客户端。

虽然这不是推荐的做法,但如果您决心这样做,网上有一堆教程将指导您如何做到这一点:


您可以创建如下表:

CREATE TABLE `image` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `filename` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
    `mime_string` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
    `data` longblob NOT NULL,
    `data_size` int(11) NOT NULL,
    `hash` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
    `compressed` tinyint(4) NOT NULL,
    `remote_id` int(11) DEFAULT NULL,
    `created_at` datetime DEFAULT NULL,
    `updated_at` datetime DEFAULT NULL,
    PRIMARY KEY (`id`),
    KEY `image_I_1` (`hash`),
    KEY `image_I_2` (`remote_id`)
) ENGINE=InnoDB AUTO_INCREMENT=125 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT
将文件写回输出时,必须写入HTTP头内容类型 与mime类型相同:

header( 'Content-type', 'image/png' );

这就是为什么要将mime类型与它一起存储。

确定不将图像存储在数据库中吗??只存储映像的路径不是更好吗?Mihran,如果你用便宜的主机托管你的网站,你就不会让apache(或IIS)拥有写权限。您必须将上传的内容存储在数据库中。@nash听起来像个垃圾主机。nash,我建议在这种情况下更换主机。网络主机市场竞争激烈,没有理由继续使用垃圾主机。你可以让自己适应小问题,但不允许文件写入不是一个“小”问题。几乎每个主机都提供写入权限,如果没有,你就不应该使用它们。你获得控制面板访问权限了吗?我意识到存储路径名比在数据库中存储图像要好。无论如何,谢谢你。