Главная
 
Article CMS - лучший катaлог статей!Воскресенье, 19.05.2024, 00:40



Приветствую Вас Гость | RSS
Главная
Меню

Поиск

Новые файлы
[25.08.2009]
ArticleCMS 2.0 (0)
[12.05.2009]
Ротатор опросов (1)
[12.05.2009]
PHP Expert Editor (0)

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Опросы
Что надо добавить/изменить в Article CMS?
Всего ответов: 5

Главная » 2009 » Июнь » 25 » Вывод картинок из БД(MySql)
Вывод картинок из БД(MySql)
11:50

Все хватит ерундистики. Будем учится.

Вот сейчас будет первая обучающая статья и называется она Вывод картинок из БД(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="putimage.php">
Изображение: <input type="file" name="image" />
<input type="submit" value="Загрузить" />
</form>

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

// Проверяем пришел ли файл
if( !empty( $_FILES['image']['name'] ) ) {
// Проверяем, что при загрузке не произошло ошибок
if ( $_FILES['image']['error'] == 0 ) {
// Если файл загружен успешно, то проверяем - графический ли он
if( substr($_FILES['image']['type'], 0, 5)=='image' ) {
// Читаем содержимое файла
$image = file_get_contents( $_FILES['image']['tmp_name'] );
// Экранируем специальные символы в содержимом файла
$image = mysql_escape_string( $image );
// Формируем запрос на добавление файла в базу данных
$query="INSERT INTO `images`(`id`,`content`) VALUES(NULL, '".$image."')";
// После чего остается только выполнить данный запрос к базе данных
mysql_query( $query );
}
}
}
?>

Извлечь сохраненный файл изображения можно следующим образом (файл image.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" alt="" />

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

Да и хочу выразить благодарность автору этой статьи. Вы всегда сможете перейти на авторский сайт по ссылке в блоке "Наши друзья" с правой стороны или прямо отсюда Web-мастер: курс молодого бойца.

Просмотров: 4054 | Добавил: respekt | Рейтинг: 0.0/0 |
Всего комментариев: 1
1 respekt  
0
Да и еще все вопросы сюда

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Архив записей

наши друзья


  • Официальный блог

  • Web-мастер: курс молодого бойца


  • Counter
    Rambler's Top100 ProtoPlex: программы, форум, рейтинг, рефераты, рассылки!

    Реклама





    Copyright MyCorp © 2024