Login
Проблема с выводом изображения из 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
in Antwort R1111 16.02.10 15:22
Ты всегда так кодишь с прямым вписыванием $_GET переменных в SQL?
Хранить файлы в базе данных - не самое хорошее решение.
По сабжу. Перед header(...); точно нету никакого вывода? К примеру перед "<?" пробел или еще что-то; скрипт в UTF-8 сохранен и пишет BOM на выводе.
Хранить файлы в базе данных - не самое хорошее решение.
По сабжу. Перед header(...); точно нету никакого вывода? К примеру перед "<?" пробел или еще что-то; скрипт в UTF-8 сохранен и пишет BOM на выводе.
NEW 16.02.10 16:13
in Antwort R1111 16.02.10 15:22
попробовал у себя простенький скрипт.
Firefox, к примеру, такую ерунду не хавает:
header("Content-type: image/*");
ему надо конкретное указание типа картинки, аля:
header("Content-type: image/png");
Firefox, к примеру, такую ерунду не хавает:
header("Content-type: image/*");
ему надо конкретное указание типа картинки, аля:
header("Content-type: image/png");
NEW 16.02.10 16:47
in Antwort GANDJUBAS 16.02.10 16:13
Пробовал и image/jpg всё то же. А ещё пишет Warning: Cannot modify header information - headers already sent by
Использую IE7
Использую IE7
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
NEW 16.02.10 17:08
Ну это и есть причина. Уже что-то было послано до того, как был прописан хидер.
in Antwort R1111 16.02.10 16:47
В ответ на:
Warning: Cannot modify header information - headers already sent by
Warning: Cannot modify header information - headers already sent by
Ну это и есть причина. Уже что-то было послано до того, как был прописан хидер.
NEW 16.02.10 17:28
in Antwort GANDJUBAS 16.02.10 17:08
Нет ничего, всё убрал, теперь так не пишет но при открытии файла выходит запрос, открыть или сохранить. Выбираешь открыть , открывает блокнотом.
Файл php. Странно, картинка из базы видимо никак не выводится как файл, только как набор символов
Файл php. Странно, картинка из базы видимо никак не выводится как файл, только как набор символов
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
NEW 16.02.10 18:30
in Antwort R1111 16.02.10 15:22
NEW 16.02.10 18:50
in Antwort Валидол 16.02.10 18:30
Экперемент. Было бы удонее прямо из базы показывать. Меня тоже учили что в бд только пути а файлы в каталогах. Есть ряд причин и преимуществ но иногода быват жаль что нельзя сразу а базу и оттуда. Поэтому хочу попробовать как будет выглядеть,при работе с MS SQL получается, и с ORACLE
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
NEW 16.02.10 19:02
in Antwort R1111 16.02.10 18:50
Интересно, картинка записывается как двоичный формат, это не файл картинки , а то из чего она состоит . Следовательно как бы тогда всё это обратно в файл превратить? Почему то в например
MS SQL серваке , записывается так же, но когда выводишь видно картинку, правда это не в php а ASP.
MS SQL серваке , записывается так же, но когда выводишь видно картинку, правда это не в php а ASP.
Web Site maker, Erstellen von Internetseiten und SEO Optimierung
NEW 16.02.10 23:25
in Antwort R1111 16.02.10 17:28
Ну раз пишет, что уже что-то послало, значит что-то послало. Чудес не бывает.
NEW 17.02.10 09:04
Долго пытался понять смысл написанного. Так и не понял.
in Antwort R1111 16.02.10 19:02
В ответ на:
картинка записывается как двоичный формат, это не файл картинки , а то из чего она состоит
картинка записывается как двоичный формат, это не файл картинки , а то из чего она состоит
Долго пытался понять смысл написанного. Так и не понял.
Dropbox - средство синхронизации и бэкапа файлов.
17.02.10 12:35
in Antwort 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
in Antwort Oleg.de 17.02.10 12:35, Zuletzt geändert 17.02.10 13:16 (R1111)
Никто не угодал
Всем спасибо, уважаемые коллеги. Ларчик просто открывался. Поразмыслил тыковкой и вывел вот такую вещь, всё работает.
файл 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
NEW 17.02.10 14:14
Логичнее посмотреть справку по imagepng / imagejpeg / ... где показано, как делают показ сгенерированных картинок. (именно так как ты и нашёл, используя два скрипта) Из твоих вопросов перемешанных бессмыслицей про "файл не как файл а то из чего он состоит" я так и не понял, что тебе нужно было после того, как избавился от вывода мусора до посылки хидера. -)
in Antwort R1111 17.02.10 13:13, Zuletzt geändert 17.02.10 14:15 (voxel3d)
В ответ на:
Вот и всё, как видно из первой теории что данные о картинке хранятся в базе как набор двоичного кода, следовательно и выводится он как код,
тогда логичнее было бы принять его как за файл изображения и показать тегом img src=
Вот и всё, как видно из первой теории что данные о картинке хранятся в базе как набор двоичного кода, следовательно и выводится он как код,
тогда логичнее было бы принять его как за файл изображения и показать тегом img src=
Логичнее посмотреть справку по imagepng / imagejpeg / ... где показано, как делают показ сгенерированных картинок. (именно так как ты и нашёл, используя два скрипта) Из твоих вопросов перемешанных бессмыслицей про "файл не как файл а то из чего он состоит" я так и не понял, что тебе нужно было после того, как избавился от вывода мусора до посылки хидера. -)
Dropbox - средство синхронизации и бэкапа файлов.
NEW 17.02.10 18:07
Ватсон, это же как два пальца об асфальт
файл - это байты на диске
а состоят они из намагниченных молекул оксида железа
in Antwort voxel3d 17.02.10 14:14
В ответ на:
"файл не как файл а то из чего он состоит"
"файл не как файл а то из чего он состоит"
Ватсон, это же как два пальца об асфальт
файл - это байты на диске
а состоят они из намагниченных молекул оксида железа
NEW 17.02.10 18:59
in Antwort R1111 17.02.10 13:13
мне помогло
-----
Тебе бы больше помогло, если бы ты глянул... RFC 2557.
<IMG SRC="data:image/gif;base64,R..."
Тем более, что ссылки находятся за пару минут.
-----
Тебе бы больше помогло, если бы ты глянул... RFC 2557.
<IMG SRC="data:image/gif;base64,R..."
Тем более, что ссылки находятся за пару минут.


