Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2015, 13:44   #1
pj-infest
Пользователь
 
Аватар для pj-infest
 
Регистрация: 09.10.2010
Сообщений: 25
Вопрос Вивод изображения из бази даних(BLOB поля)

Добрый вечер форумчане, если у кого-то есть свободная минутка, буду очень благодарен за помощь.

Проблема заключается в том, что нужно вывести изображение из таблицы базы данных. Оно хранится в поле типа BLOB.

Я глядя на примеры написал некий скрипт, но в результате в браузер мне выводится вместо картинки из базы, сообщение: «Изображение не может быть показано, так как содержит ошибки". Помогите пожалуйста.

Код:
<?PHP
       header("Content-type: image/jpeg");
       require "PublicationManagementFunctions.php";

       $PublicationID = (int)$_GET['id'];

       OpenDBConnection();

       $SQLRequest = "SELECT * FROM ".TABLE_NAME." WHERE  id=".$PublicationID."";

       $query = mysql_query($SQLRequest);
       CloseDBConnection();
       $row = mysql_fetch_array($query, MYSQL_ASSOC);
       echo $row['Image'];

   ?>
pj-infest вне форума Ответить с цитированием
Старый 28.01.2015, 12:26   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Мало вводных.
Откуда нам знать что не было ошибки при записи изображения? Что никто пробел или бом не вывел?
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 28.01.2015, 14:40   #3
pj-infest
Пользователь
 
Аватар для pj-infest
 
Регистрация: 09.10.2010
Сообщений: 25
По умолчанию

Я смотрел через phpMyAdmin, там в таблице лежит значение, которое по размерам соответствует размеру файла


Последний раз редактировалось pj-infest; 28.01.2015 в 14:43.
pj-infest вне форума Ответить с цитированием
Старый 28.01.2015, 15:02   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Код:
"SELECT * FROM ".TABLE_NAME." WHERE  id=".$PublicationID."";
Не боитесь, что какой-нибудь странный пользователь захочет запросить страницу с примерно таким адресом?
Код:
***.php?id=%27;DROP%20TABLE%20TABLE_NAME

UPD: а, не заметил, что к int таки приводится id. Но все равно я бы советовал использовать prepared statement вместо такой конкатенации строк.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.01.2015 в 15:06.
Alex11223 вне форума Ответить с цитированием
Старый 28.01.2015, 15:05   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Не боитесь, что какой-нибудь странный пользователь захочет запросить страницу с примерно таким адресом?
Код:
***.php?id=%27;DROP%20TABLE%20TABLE_NAME
дык у него вроде в начале -
PHP код:
 $PublicationID = (int)$_GET['id']; 
полюбасу тока число будет
ADSoft вне форума Ответить с цитированием
Старый 28.01.2015, 15:07   #6
pj-infest
Пользователь
 
Аватар для pj-infest
 
Регистрация: 09.10.2010
Сообщений: 25
По умолчанию

Так а что мне делать с выводом картинки?
pj-infest вне форума Ответить с цитированием
Старый 28.01.2015, 15:26   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

а хз.. попробуй хидер непосредственно перед выводом переместить
Код:
 header("Content-type: image/jpeg");
 echo $row['Image'];
если до хидера гдето в скрипте чето пытается выводить - у тебя будет конкретная ошибка насчет того что не может хидер изменить

а вообще ты прям от этого скрипта птыаешься получить изображение? или он используется в качестве вспомогательного... типа

Код:
<img src = "a.php">
ADSoft вне форума Ответить с цитированием
Старый 28.01.2015, 16:03   #8
pj-infest
Пользователь
 
Аватар для pj-infest
 
Регистрация: 09.10.2010
Сообщений: 25
По умолчанию

не помогло.

Скрип используется как вспомагательний

Код:
echo "<img src='http://localhost/task/ShowImageByID.php?id=".$id."' />";
pj-infest вне форума Ответить с цитированием
Старый 28.01.2015, 16:27   #9
pj-infest
Пользователь
 
Аватар для pj-infest
 
Регистрация: 09.10.2010
Сообщений: 25
По умолчанию

Проблема решена, суть заключалась в том, шо подключения и отключения от базы выполнялось функциями из другого файла, который каким-то образом задавал неправильный контент тайп, как только я отказался от подключения внешнего файла, все запрацбвало правильно. Благодарю за помощь.

добавляю код, может кому пригодится

Скрипт для вивода изображения:

Код:
<?PHP

	define('HOST',          'localhost'   );
	define('DB_NAME',       'bagrijroman' );
	define('TABLE_NAME',    'Publications');
	define('USER_NAME',     'root'        );
	define('PASSWORD',      ''            );
	
	$PublicationID = (int)$_GET['id'];
	
	$DataBaseHandle = mysql_connect(HOST, USER_NAME, PASSWORD) or die (mysql_error());
	mysql_select_db(DB_NAME) or die (mysql_error());
	
	$SQLRequest = "SELECT Image FROM ".TABLE_NAME." WHERE id=".$PublicationID."";
	
	$query = mysql_query($SQLRequest) or die (mysql_error());
	
	$row = mysql_fetch_array($query, MYSQL_ASSOC);
	
	header('Content-type: image/jpeg; charset=utf-8');
	echo $row['Image'];

	mysql_close($DataBaseHandle);
	
?>
pj-infest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Exel, помогите с формировкой бази даних famasik Microsoft Office Excel 15 15.10.2013 11:32
Добавление изображения в blob через sql. Blob пустой. athleet БД в Delphi 3 01.05.2012 06:41
обновление blob поля artemavd БД в Delphi 2 31.07.2009 04:09
Blob поля в делфи dagarik БД в Delphi 2 02.12.2007 17:33