Как вставить изображения в базу данных, извлечь их из базы данных и отобразить с помощью PHP? - PullRequest
0 голосов
/ 27 апреля 2011

Как вставить изображения в базу данных, извлечь их из базы данных и отобразить с помощью PHP?

Я пробовал много раз, так как я новичок в PHP, пожалуйста, помогите мне.

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Хотя это не рекомендуемая практика, если вы настроены на это, есть куча онлайн-уроков, в которых вы узнаете, как это сделать:

2 голосов
/ 27 апреля 2011

Вы можете использовать поле BLOB для хранения двоичных данных, но учтите, что производительность может быть умеренной.Почти всегда лучше сохранить изображение в виде файла на диске и просто сохранить имя файла в базе данных.Чтобы получить изображение из базы данных, вам нужно будет прочитать все изображение в память, что является пустой тратой ресурсов.Лучше перенести обработку изображений на веб-сервер, который может передавать изображение клиенту.

1 голос
/ 27 апреля 2011

Вы можете создать таблицу следующим образом:

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 вместе с ним.

...