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

时间:2011-04-27 07:03:01

标签: php mysql forms post file-upload

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

尽管这不是一种推荐的做法,如果您已经准备好这样做,那么网上有一堆教程将指导您完成此操作:

答案 2 :(得分:1)

你可以像这样创建一个表:

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类型与它一起存储的原因。