<?php
/*** хранение изображений в базе данных **
*
//структура таблицы
CREATE TABLE image (
id_image int(11) NOT NULL auto_increment,
name tinytext NOT NULL,
content longblob NOT NULL,
PRIMARY KEY (id_image)
) TYPE=MyISAM;
*/
?>
<form enctype='multipart/form-data' method=post>
<input type="file" name="image"><br>
<input type=submit value='Загрузить'>
</form>
<?php
// Число изображений на странице
$pnumber = 3;
// Устанавливаем соединение с базой данных
// Сетевой адрес MySQL-сервера
$dblocation = "localhost";
// Имя базы данных
$dbname = "book";
// Пользователь
$dbuser = "root";
// Его пароль
$dbpasswd = "";
// Устанавливаем соединение с базой данных
if (!$dbcnx) exit ("К сожалению, не доступен сервер MySQL : ".mysql_error()); // Выбираем базу данных
// Обработчик HTML-формы
{
// Проверяем является ли переданный файл картинкой
if(substr($_FILES['image']['type'],0,5) == 'image') {
// Читаем содержимое файла
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Экранируем спец-символы в бинарном содержимом файла
// Формируем запрос на добавление файла в таблицу
$query = "INSERT INTO image VALUES(NULL, '".$_FILES['image']['name']."', '$content')";
{
// Осуществляем автоматическую перезагрузку страницы
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'>
</HEAD></HTML>";
}
}
?>
Для вывода файла можно воспользоваться таким скриптом:
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
// Провряем передан ли параметр id_image
// и является ли он целым числом, чтобы
// предотвратить SQL-инъекцию
{
exit("Недопустимый формат URL-запроса"); }
// Извлекаем файл из базы данных
$query = "SELECT * FROM image
WHERE id_image = $_GET[id_image]";
// Отсылаем заголовки на загрузку файла
header("Content-type: image/*"); // Отправляем файл пользователю
echo $image['content'];
?>