Создание базы данных для изображений

В этом уроке мы научимся загружать изображение в базу данных MySql с использованием PHP. Хотя идея звучит сложной, но является достаточно простой в реализации и имеет множество практических применений. Изображение можно вызвать с базы данных с помощью всего одного PHP запроса. У вас, наверное, уже созрел вопрос – «Как изображения вставляются в базу данных?». Сейчас мы будем в этом разбираться.

Ну что начнем изучать!

Создаем три PHP файла:

-readdir.php – записываем изображение в базу данных

image.php – сценарий отображения изображения

view.php – пример файла, который покажет вам, как называются изображения

Создаем базу данных для изображений

Во-первых, для начала нам нужно создать базу данных, куда будут записываться изображения, назовем ее base64imgdb.

Во-вторых, создать таблицу с двумя строками:


 CREATE TABLE `images` (
 `imgid` INT NOT NULL AUTO_INCREMENT ,
 `sixfourdata` LONGTEXT NOT NULL ,
 PRIMARY KEY ( `imgid` )
 );
 

Создание READDIR.PHP

Для начала работы, нам нужно создать соединение с базой данных:


 <?php
 $dbcnx = mysql_connect("localhost", "username", "password");
 mysql_select_db("base64imgdb");
 ?>
 

Далее нам нужно открыть каталог, где “. /” – это каталог где находится файл readdir.php:


 $path = "./";
 $dir_handle = opendir($path) or die("Unable to open directory $path");
 

Это самая трудная часть сценария: сортировка типов изображений, чтение данных с использованием fopen, превращая его в использование base64_encode, а затем вставить его в таблицу.


 <?php
 while ($file = readdir($dir_handle)) {
 $filetyp = substr($file, -3);
 if ($filetyp == 'gif' OR $filetyp == 'jpg') {
 $handle = fopen($path . "/" . $file,'r');
 $file_content = fread($handle,filesize($path . "/" . $file));
 fclose($handle);
 $encoded = chunk_split(base64_encode($file_content));
 $sql = "INSERT INTO images SET sixfourdata='$encoded'";
 mysql_query($sql);
 }
 }
 ?>
 

Это последняя и окончательная часть readdir.php: закрытие каталога и завершение процесса:


 <?php
 closedir($dir_handle);
 echo("complete");
 mysql_close($dbcnx);
 ?>
 

Создание image.php

Этот файл принимает запросы, декодирует данные и представляет себя в качестве изображения. Во-первых, мы должны подключиться к базе данных еще раз:


 <?php
 $dbcnx=mysql_connect("localhost","username","password");
 mysql_select_db("base64imgdb");
 ?>
 

Теперь мы создадим строки, которые осуществляют запрос типа image.php?img=x


 <?php
 $img = $_REQUEST["img"];
 ?>
 

После этого, нам необходимо подключиться к таблице в базе данных, получить данные, и установить их в переменные:


 <?php
 $result = mysql_query("SELECT * FROM images WHERE imgid=" . $img ."");
 if (!$result) {
 echo("<b>Не удалось подключиться к базе данных: " . mysql_error() . "</b>");
 exit();
 }
 while ($row = mysql_fetch_array($result)) {
 $imgid = $row["imgid"];
 $encodeddata = $row["sixfourdata"];
 }
 ?>
 

Это наиболее запутанная часть файла:


 <?php
 mysql_close($dbcnx);
 echo base64_decode($encodeddata);
 ?>
 

Ну и наконец, вывод изображения.

<img src='image.php?img=1' border="0" alt="">

Файлы которые мы использовали для создания скрипта.!

readdir.php:


 <?php
 $dbcnx = mysql_connect("localhost", "username", "password");
 mysql_select_db("base64imgdb");
 $path = "./";
 $dir_handle = opendir($path) or die("Unable to open directory $path");
 while ($file = readdir($dir_handle)) {
 $filetyp = substr($file, -3);
 if ($filetyp == 'gif' OR $filetyp == 'jpg') {
 $handle = fopen($file,'r');
 $file_content = fread($handle,filesize($file));
 fclose($handle);
 $encoded = chunk_split(base64_encode($file_content));
 $sql = "INSERT INTO images SET sixfourdata='$encoded'";
 mysql_query($sql);
 }
 }
 closedir($dir_handle);
 echo("complete");
 mysql_close($dbcnx);
 ?>
 

image.php


 <?php
 $dbcnx = mysql_connect("localhost", "username", "password");
 mysql_select_db("base64imgdb");
 $img = $_REQUEST["img"];
 $result = mysql_query("SELECT * FROM images WHERE imgid=" . $img . "");
 if (!$result) {
 echo("<b> Не удалось подключиться к базе данных: " . mysql_error() . "</b>");
 exit();
 }
 while ($row = mysql_fetch_array($result) ) {
 $imgid = $row["imgid"];
 $encodeddata = $row["sixfourdata"];
 }
 mysql_close($dbcnx);
 echo base64_decode($encodeddata);
 ?>
 

И view.php


 <html>
 <body>
 ...
 <img src='image.php?img=1' border="0" alt="">
 ...
 </body>
 </html>
 

Вот и все!

Понравился урок? Добавьте его к себе в закладки.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *