adsPlace_1

Войти или Зарегистрироваться

adsPlace_3

Хранение изображений в базе данных MySQL

Для хранения изображений в базе данных MySQL необходимо определить одно из полей таблицы как производное от типа BLOB. Сокращение BLOB означает большой двоичный объект. Тип хранения данных BLOB обладает несколькими вариантами:

  • TINYBLOB — может хранить до 255 байт
  • BLOB — может хранить до 64 килобайт информации
  • MEDIUMBLOB — до 16 мегабайт
  • LONGBLOB — до 4 гигабайт

Соответсвенно, для хранения изображений нам надо создать таблицу images с двумя полями:

  • id — уникальный ID изображения
  • content — поле для хранения изображения

Для сохранения файла изображения в базе данных необходимо прочитать файл в переменную и создать запрос на добавление данных в таблицу. Допустим у нас есть форма для загрузки файла изображения на сервер:

<form enctype="multipart/form-data" method="post" action="loadImage.php">
	Изображение: <input type="file" name="image" />
	<input type="submit" value="Загрузить" />
</form>

Обработчик формы — файл loadImage.php:

Извлечь сохраненный файл изображения можно следующим образом (файл image.php):

<?php
 if ( isset( $_GET['id'] ) ) {
 // Здесь $id номер изображения
 $id = (int)$_GET['id'];
 if ( $id > 0 ) {
 $query = "SELECT `content` FROM `images` WHERE `id`=".$id;
 // Выполняем запрос и получаем файл
 $res = mysql_query($query);
 if ( mysql_num_rows( $res ) == 1 ) {
 $image = mysql_fetch_array($res);
 // Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
 header("Content-type: image/*");
 // И передаем сам файл
 echo $image['content'];
 }
 }
 }
 ?>

Чтобы вывести изображение в HTML-документе, делаем так:

<img src="image.php?id=17" />

Графические файлы иногда имеют довольно большой размер, убедитесь, что настройки сервера позволяют работать с таким объемом данных. В файле php.ini это директивы post_max_size — определяет максимальный объем данных передаваемых методом POST, и upload_max_filesize — определяет максимальный размер загружаемого файла. Так же проверьте, позволяют ли настройки MySQL обрабатывать запросы с большим объемом данных (директива max_allowed_packet файла my.ini).

Последние из рубрики

Комментарии(0)

  • Комментариев еще нет. Будь первым!

    Оставь свой отзыв

    Для вставки кода используйте кнопки php, html, javascript, css, sql

    * - поля обязательны к заполнению