Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Записать содержимое графического файла в БД

10.08.2011, 08:15. Показов 3614. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашёл такую страницу: Графика средствами PHP. Но у меня немножко другая задача:
подзадача № 1 - прочитать графический файл в формате bmp или jpg и запихать его в поле типа BLOB таблицы MySQL.
подзадача № 2 - использовать поле типа BLOB таблицы MySQL для выдачи графики. Как решить мою задачу?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.08.2011, 08:15
Ответы с готовыми решениями:

Инверсия графического файла
Графический файл предствляет собой небольшую строку из двух-трех слов, преобразованную средствами РНР в PNG формат. Можно ли...

Записать содержимое графического окна в прямоугольник System.Drawing.Rectangle
Как записать содержимое графического окна в прямоугольник, допустим размером 100 на 100 с позиции 15,15 Заранее спасибо

Записать в текстовый файл содержимое Edit, и прочитать содержимое файла в Memo
Создать приложение которое создает текстовый файл текстовый файл text.txt записывает в него текст из окна edit и закрывает его. Затем...

13
 Аватар для TOI_I_IA
110 / 110 / 4
Регистрация: 25.05.2009
Сообщений: 415
10.08.2011, 09:13
HTML5
1
2
3
4
<form enctype="multipart/form-data" method="post" action="putimage.php">
Изображение: <input type="file" name="image" />
<input type="submit" value="Загрузить" />
</form>
Обработчик формы - файл putimage.php:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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` VALUES(NULL, '".$image."')";
      // После чего остается только выполнить данный запрос к базе данных
      mysql_query( $query );
    }
  }
}
?>
Извлечь сохраненный файл изображения можно следующим образом (файл image.php):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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-документе, делаем так:

HTML5
1
<img src="image.php?id=17" alt="" />
Писал не сам нашел в инете
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2011, 09:29  [ТС]
Цитата Сообщение от TOI_I_IA Посмотреть сообщение
enctype="multipart/form-data"
Это обязательно? Добавлять картинки я буду только по одной.
0
 Аватар для TOI_I_IA
110 / 110 / 4
Регистрация: 25.05.2009
Сообщений: 415
10.08.2011, 09:36
такой вид кодирования позволяет отправлять на сервер различного типа (составные) данные формы.

Следует также отметить, что для такого типа данных как файлы в том же PHP имеется отдельная переменная $_FILE, представляющую собой супер-глобальный массив содержащий информацию и загружаемых файлах.
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
10.08.2011, 09:38
Но вообще, показывать файлы из БД - это не слишком оптимально. Гораздо быстрее всё будет работать, если файлы будут просто на диске лежать и давать на них прямые ссылки.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2011, 10:00  [ТС]
Что такое
Цитата Сообщение от TOI_I_IA Посмотреть сообщение
составные данные формы
?

Добавлено через 5 минут
Цитата Сообщение от TOI_I_IA Посмотреть сообщение
image.php?id=17
Если нельзя имитировать статические пути к изображениям, то лучше вообще отказаться от графики. У меня
DirectoryIndex index.php
RewriteEngine On
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?%{QUERY_STRING}
. Это пойдёт для псевдостатических путей к графике?
0
 Аватар для TOI_I_IA
110 / 110 / 4
Регистрация: 25.05.2009
Сообщений: 415
10.08.2011, 10:07
Цитата Сообщение от Humanoid Посмотреть сообщение
Но вообще, показывать файлы из БД - это не слишком оптимально. Гораздо быстрее всё будет работать, если файлы будут просто на диске лежать и давать на них прямые ссылки.
лучше пойти по этому пути и делать таким образом загружаешь файл на сервер в определенную папку(как это сделать поищи на этом форуме по запросу UPLOAD) тут таких тем много. И при загрузке записываешь путь в бд. И в нужном месте выводишь в HTML тег img. Так будет гораздо лучше.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2011, 10:23  [ТС]
А
HTML5
1
<input name="file1" type="file">
куда закачивает? И остаётся ли по дефалту файл в этом месте после закрытия скрипта? А если остаётся, то как его принудительно стереть и этого места?
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
10.08.2011, 10:34
Цитата Сообщение от taras atavin Посмотреть сообщение
куда закачивает?
Страница, куда передаются данные указываются в теге <form> в атрибуте action

Цитата Сообщение от taras atavin Посмотреть сообщение
И остаётся ли по дефалту файл в этом месте после закрытия скрипта?
В каком месте? У пользователя остаётся. А на сервере надо сразу делать move_uploaded_file, что бы его записать в другую папку. Из временной папки на сервере он удалится, когда скрипт закончит выполнение.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2011, 11:00  [ТС]
Цитата Сообщение от Humanoid Посмотреть сообщение
move_uploaded_file
перемещает? И как я перемещу в таблицу БД? Потому и хочу именно стереть.
Цитата Сообщение от Humanoid Посмотреть сообщение
У пользователя остаётся.
Ну это понятно, но куда то же качается на сервер. Или это уже скриптом? Как?

Добавлено через 43 секунды
Цитата Сообщение от Humanoid Посмотреть сообщение
Из временной папки на сервере он удалится, когда скрипт закончит выполнение.
Точно?
0
 Аватар для TOI_I_IA
110 / 110 / 4
Регистрация: 25.05.2009
Сообщений: 415
10.08.2011, 11:09
Цитата Сообщение от taras atavin Посмотреть сообщение
Точно?
100%

Цитата Сообщение от taras atavin Посмотреть сообщение
Ну это понятно, но куда то же качается на сервер. Или это уже скриптом? Как?
Это ты указываешь в PHP коде.
Цитата Сообщение от taras atavin Посмотреть сообщение
перемещает? И как я перемещу в таблицу БД? Потому и хочу именно стереть.
перемещает в указанную директорию. А для удаления файла есть специальная команда
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2011, 11:09  [ТС]
Цитата Сообщение от TOI_I_IA Посмотреть сообщение
if( substr($_FILES['image']['type'], 0, 5)=='image'
А как получить именно тип файла (jpg, bmp и т.д.)?
0
 Аватар для TOI_I_IA
110 / 110 / 4
Регистрация: 25.05.2009
Сообщений: 415
10.08.2011, 11:14
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
if(isset($_POST['upload'])){
   
   $whitelist = array(".gif", ".jpeg", ".png"); 
 
   $error = true;
    
   //Проверяем разрешение файла
   foreach  ($whitelist as  $item) {
        if(preg_match("/$item\$/i",$_FILES['userfile']['name'])) $error = false;
   }
 
  if($error) die("Ошибка,  Вы можете загружать только gif,jpeg,png картинки"); 
 
  $folder =  'path/to/folder/';
 
  $uploadedFile =  $folder.basename($_FILES['uploadFile']['name']);
 
  if(is_uploaded_file($_FILES['uploadFile']['tmp_name'])){
 
     if(move_uploaded_file($_FILES['uploadFile']['tmp_name'],
 
        $uploadedFile)){
 
        echo Файл загружен;
     }
     else {
 
        echo "Во время загрузки файла произошла ошибка";
     }
  }
  else {
 
       echo "Файл не  загружен";
  }
}
 
?>

PHP
1
$type = strtolower(substr($_FILES['uploadFile']['tmp_name'], 1+strrpos($filename,".")));
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2011, 13:03  [ТС]
Не получается.
mysql> slelect url from images;
+-----------+
| url |
+-----------+
| /admin.jpg |
+-----------+
1 row in set (0.00 sec)
,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if ((substr($url,-4) == ".jpg") or (substr($url,-4) == ".bmp"))
{//if ((substr($url,-4) == ".jpg") or (substr($url,-4) == ".bmp"))
 $IamgeQuery = "SELECT * FROM images WHERE (url='".$url."');";
 $ImageResult = mysql_query($HeaderQuery, $base);
 $ImageCount = mysql_num_rows($PagesResult);
 if ($ImageCount > 0)
 {//if ($ImageCount > 0)
  $image = mysql_result ($ImageResult, 0, "image");
  header("Content-type: image/jpeg");
  // И  передаем сам файл
  echo $image;
 }//if ($ImageCount > 0)
 return;
}//if ((substr($url,-4) == ".jpg") or (substr($url,-4) == ".bmp"))
,
HTML5
1
<center><img src="admin.jpg" alt="Фотография Атавина Тараса Александровича" width=45px height=45px></center>
, но фотографии нет.

Добавлено через 2 минуты
Всё получилось, ошибка была в том, что я забыл исправить имена переменных.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2011, 13:03
Помогаю со студенческими работами здесь

Как снять изображение с объектов и записать их в виде графического файла ???
Вопрос такой. в VBA, я сканирую активный документ на предмет объектов разного рода и нужно скопировать изображение этого объекта в...

Записать содержимое файла в строку
Здравствуйте, у меня вопрос как можно содержимое файла записать в string using System; using System.IO; using System.Text; using...

Содержимое файла записать в массив
Доброго времени суток! Подскажите пожалуйста, как содержимое файла, записать в массив?

Содержимое файла записать в двумерный массив
в файле хранятся числа в виде 2 2 2 1 1 2 1 1 записал их в двумерный массив. естественно что в массиве должны хранится в виде 2 2...

Содержимое файла записать в многомерный массив
Доброго времени суток. Суть такова - eсть файл, в котором записаны данные вида: 1 name type1 type2 pic 1 name type1 type2 pic 1 name...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru