Вход на сайт
Проблема с выводом изображения из MySQL
479
NEW 16.02.10 15:22
Скрипт вот такой
// Обработчик HTML-формы
if(!empty($_FILES))
{
// Проверяем является ли переданный файл картинкой
if(substr($_FILES['image']['type'],0,5) == 'image')
{
// Читаем содержимое файла
$content = file_get_contents($_FILES['image']['tmp_name']);
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Экранируем спец-символы в бинарном содержимом файла
$content = mysql_escape_string($content);
// Формируем запрос на добавление файла в таблицу
$query = "INSERT INTO image VALUES(NULL, '".$_FILES['image']['name']."', '$content')";
if(mysql_query($query))
{
Поле в таблице куда записывается картинка BLOB
Вывожу вот так
// Извлекаем файл из базы данных
$query = "SELECT * FROM image
WHERE id_image = $_GET[id_image]";
$img = mysql_query($query);
if(!$img) exit(mysql_error());
$image = mysql_fetch_array($img);
// Отсылаем заголовки на загрузку файла
header("Content-type: image/*");
// Отправляем файл пользователю
echo $image['content'];
Но вместо картинки выводится вот это
#2aqBЃ‘$3RЎ±Б %Ср4CSbrб&‚’ў¤ІВс5DEcѓ•ґ')6Tdst„“іДТФVeu…‡ЈҐµХяЪ?ыщЈFґpчЖ›;Ќ~@Ыk"Ґ}ХйхIq)1Х%ШФXП–вSкЋР.8Їъ©к›ЗяHGГRЈёu¦§ЯwФ‹љ€Ґ …>ЯХЭ—§еWњКY+@I HъкpбЯ€ч 9Ы¦®.пќ2ж•DXjҐH-»ЈY)Л±^J@%$g§Рђu:2лѓЈІG§ѕІЬ„#ж#Ч'[®Sc«їРќkЦ”§©C#?]cвЩQ@іYуPћ”фзї¦°lцJR{ыj™m9i9N{Њлnґ¤ЏЧXT¤6’p:}Й=±Ў3ЪQифП¦u”KI8чЗmrПыЏЧйых•Hи%їAЯи5џ€ ЂPrЇALЖ”ЂµcР“Ќ[hЂnюъВет§Gлd-—О|ДдЊъъЌ.А@"уЯУJhСЈFЌ4hСЈFЌ4hСЈFЌ4hСЈXWб:з/) HИ>ъИtџЖЖ•l{юьk}4hСЈFЌ4hСЈFЌ4hСЈZ8=я~ё¦0ўЏ»YЏt’нЇЊюUHT?ф¦9џ]U %ъЦ”yѕXtщфµ}A$dъ~zbV‰zҐХ@«p‚Є$·њКw"U ґ*ћћЋ¦j
Как ещё можно вывести картинку?
// Обработчик HTML-формы
if(!empty($_FILES))
{
// Проверяем является ли переданный файл картинкой
if(substr($_FILES['image']['type'],0,5) == 'image')
{
// Читаем содержимое файла
$content = file_get_contents($_FILES['image']['tmp_name']);
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Экранируем спец-символы в бинарном содержимом файла
$content = mysql_escape_string($content);
// Формируем запрос на добавление файла в таблицу
$query = "INSERT INTO image VALUES(NULL, '".$_FILES['image']['name']."', '$content')";
if(mysql_query($query))
{
Поле в таблице куда записывается картинка BLOB
Вывожу вот так
// Извлекаем файл из базы данных
$query = "SELECT * FROM image
WHERE id_image = $_GET[id_image]";
$img = mysql_query($query);
if(!$img) exit(mysql_error());
$image = mysql_fetch_array($img);
// Отсылаем заголовки на загрузку файла
header("Content-type: image/*");
// Отправляем файл пользователю
echo $image['content'];
Но вместо картинки выводится вот это
#2aqBЃ‘$3RЎ±Б %Ср4CSbrб&‚’ў¤ІВс5DEcѓ•ґ')6Tdst„“іДТФVeu…‡ЈҐµХяЪ?ыщЈFґpчЖ›;Ќ~@Ыk"Ґ}ХйхIq)1Х%ШФXП–вSкЋР.8Їъ©к›ЗяHGГRЈёu¦§ЯwФ‹љ€Ґ …>ЯХЭ—§еWњКY+@I HъкpбЯ€ч 9Ы¦®.пќ2ж•DXjҐH-»ЈY)Л±^J@%$g§Рђu:2лѓЈІG§ѕІЬ„#ж#Ч'[®Sc«їРќkЦ”§©C#?]cвЩQ@іYуPћ”фзї¦°lцJR{ыj™m9i9N{Њлnґ¤ЏЧXT¤6’p:}Й=±Ў3ЪQифП¦u”KI8чЗmrПыЏЧйых•Hи%їAЯи5џ€ ЂPrЇALЖ”ЂµcР“Ќ[hЂnюъВет§Gлd-—О|ДдЊъъЌ.А@"уЯУJhСЈFЌ4hСЈFЌ4hСЈFЌ4hСЈXWб:з/) HИ>ъИtџЖЖ•l{юьk}4hСЈFЌ4hСЈFЌ4hСЈZ8=я~ё¦0ўЏ»YЏt’нЇЊюUHT?ф¦9џ]U %ъЦ”yѕXtщфµ}A$dъ~zbV‰zҐХ@«p‚Є$·њКw"U ґ*ћћЋ¦j
Как ещё можно вывести картинку?
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
NEW 16.02.10 16:06
в ответ R1111 16.02.10 15:22
Ты всегда так кодишь с прямым вписыванием $_GET переменных в SQL?
Хранить файлы в базе данных - не самое хорошее решение.
По сабжу. Перед header(...); точно нету никакого вывода? К примеру перед "<?" пробел или еще что-то; скрипт в UTF-8 сохранен и пишет BOM на выводе.
Хранить файлы в базе данных - не самое хорошее решение.
По сабжу. Перед header(...); точно нету никакого вывода? К примеру перед "<?" пробел или еще что-то; скрипт в UTF-8 сохранен и пишет BOM на выводе.
NEW 16.02.10 17:28
в ответ GANDJUBAS 16.02.10 17:08
Нет ничего, всё убрал, теперь так не пишет но при открытии файла выходит запрос, открыть или сохранить. Выбираешь открыть , открывает блокнотом.
Файл php. Странно, картинка из базы видимо никак не выводится как файл, только как набор символов
Файл php. Странно, картинка из базы видимо никак не выводится как файл, только как набор символов
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
16.02.10 18:50
в ответ Валидол 16.02.10 18:30
Экперемент. Было бы удонее прямо из базы показывать. Меня тоже учили что в бд только пути а файлы в каталогах. Есть ряд причин и преимуществ но иногода быват жаль что нельзя сразу а базу и оттуда. Поэтому хочу попробовать как будет выглядеть,при работе с MS SQL получается, и с ORACLE
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
16.02.10 19:02
в ответ R1111 16.02.10 18:50
Интересно, картинка записывается как двоичный формат, это не файл картинки , а то из чего она состоит . Следовательно как бы тогда всё это обратно в файл превратить? Почему то в например
MS SQL серваке , записывается так же, но когда выводишь видно картинку, правда это не в php а ASP.
MS SQL серваке , записывается так же, но когда выводишь видно картинку, правда это не в php а ASP.
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
NEW 17.02.10 12:35
в ответ R1111 16.02.10 17:28
делайте правильно хеадер :http://http%3A//php.net/manual/de/function.header.php и будет вам счастье!
header("Content-type: ****
header("Content-Transfer-Encoding: ****
header("Content-Disposition: attachment; filename=****
header("Content-type: ****
header("Content-Transfer-Encoding: ****
header("Content-Disposition: attachment; filename=****
О Германии на русском: Законы, карьера, общество ...
NEW 17.02.10 13:13
Никто не угодал
Всем спасибо, уважаемые коллеги. Ларчик просто открывался. Поразмыслил тыковкой и вывел вот такую вещь, всё работает.
файл image.php
include("connect.php");
$query = "SELECT * FROM image WHERE id_image=2";
$img = mysql_query($query);
if(!$img) exit(mysql_error());
$image = mysql_fetch_array($img);
header("Content-type: image/*");
echo $image['content'];
Файл вывода rezult.php
echo"<img src='image.php'>";
Вот и всё, как видно из первой теории что данные о картинке хранятся в базе как набор двоичного кода, следовательно и выводится он как код,
тогда логичнее было бы принять его как за файл изображения и показать тегом img src=
Студентам на земетку, а мне помогло справится с очередной задачей
файл image.php
include("connect.php");
$query = "SELECT * FROM image WHERE id_image=2";
$img = mysql_query($query);
if(!$img) exit(mysql_error());
$image = mysql_fetch_array($img);
header("Content-type: image/*");
echo $image['content'];
Файл вывода rezult.php
echo"<img src='image.php'>";
Вот и всё, как видно из первой теории что данные о картинке хранятся в базе как набор двоичного кода, следовательно и выводится он как код,
тогда логичнее было бы принять его как за файл изображения и показать тегом img src=
Студентам на земетку, а мне помогло справится с очередной задачей
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
17.02.10 14:14
Логичнее посмотреть справку по imagepng / imagejpeg / ... где показано, как делают показ сгенерированных картинок. (именно так как ты и нашёл, используя два скрипта) Из твоих вопросов перемешанных бессмыслицей про "файл не как файл а то из чего он состоит" я так и не понял, что тебе нужно было после того, как избавился от вывода мусора до посылки хидера. -)
В ответ на:
Вот и всё, как видно из первой теории что данные о картинке хранятся в базе как набор двоичного кода, следовательно и выводится он как код,
тогда логичнее было бы принять его как за файл изображения и показать тегом img src=
Вот и всё, как видно из первой теории что данные о картинке хранятся в базе как набор двоичного кода, следовательно и выводится он как код,
тогда логичнее было бы принять его как за файл изображения и показать тегом img src=
Логичнее посмотреть справку по imagepng / imagejpeg / ... где показано, как делают показ сгенерированных картинок. (именно так как ты и нашёл, используя два скрипта) Из твоих вопросов перемешанных бессмыслицей про "файл не как файл а то из чего он состоит" я так и не понял, что тебе нужно было после того, как избавился от вывода мусора до посылки хидера. -)
Dropbox - средство синхронизации и бэкапа файлов.


