image in MySQL @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 13 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Vadim
новый человек
0
Сообщения: 17
Зарегистрирован: 21.10.04
Заголовок сообщения: image in MySQL
Сообщение Добавлено: 16 Ноябрь 2004, 07:43:43 
Если кто знает как картинку записать в базу данных, а затем показать please. Сейчас пишу так:
$upload=addslashes($picture);
$strSQL="INSERT INTO test (picture) VALUES('$upload');
$picture - имя инпут файл в форме с enctype="multipart/form-data"
поле picture - BLOB
Пытаюсь получить:
$res=mysql_query("SELECT picture FROM test");
$image=mysql_result($res, 0, "picture");
header("Content-type: image/gif");
echo $image;
Выдает название временного файла с сервера, какое по видиму и записывает.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 16 Ноябрь 2004, 08:00:49 
1. Предполагается, что мы должны телепатически догадаться, что у тебя лежит в $picture?
2. Нахрена ты кладешь картинку в базу?

_________________
We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.
Vadim
новый человек
0
Сообщения: 17
Зарегистрирован: 21.10.04
Сообщение Добавлено: 16 Ноябрь 2004, 08:58:27 
1.В $picture файл jpg or gif.
2.Там можно сохранять бинарные данные. Теперь так он в базу вроде пишется
$upload=implode("",file($picture));
Но читается все равно целая поэма символов.
adebt Муж.
соучастник
0
Сообщения: 478
Зарегистрирован: 25.11.02
Откуда: Україна (файне місто Луцьк)
Сообщение Добавлено: 16 Ноябрь 2004, 09:21:44 
хм... а не проще картинку сохранить у себя на сервере, а в базу записать только имя картинки, не временное имя, а имя уже сохраненной картинки. Ведь сохраняя в базу всю картинку, ты ее (базу) можешь роздуть до непотребных размеров...хм...не понимаю...
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 16 Ноябрь 2004, 10:12:49 

Vadim писал(а):
1.В $picture файл jpg or gif.



Сдается мне, что ты гонишь. Как именно туда попадает "файл jpg or gif"? Код в студию!


Цитата:
2.Там можно сохранять бинарные данные.



Я не спрашивал, МОЖНО ли хранить в базе двоичные данные. Я спросил НАХРЕНА.


Цитата:
Теперь так он в базу вроде пишется
$upload=implode("",file($picture));



О! А вот и код. Почитаем... Точно! Сбрехал. Ты же только что рассказывал сказку, что в $picture у тебя лежит ФАЙЛ. А из этого фрагмента кода видно, что там ИМЯ файла.


Цитата:
Но читается все равно целая поэма символов.



Поскольку ты сказал браузеру, что это текст -- он и вывел как текст. Хочешь, чтобы браузер вывел как картинку -- скажи ему ПРАВДУ, а не как обычно. И выведет он тебе как картинку.

Я так понимаю, следующим вопросом будет "как сказать браузеру, что это картинка?". Ответ: "выдать в заголовке правильный Content-type". Что такое Content-type, какие они бывают и как их выдавать -- расскажет google.
Vadim
новый человек
0
Сообщения: 17
Зарегистрирован: 21.10.04
Сообщение Добавлено: 16 Ноябрь 2004, 11:12:30 
adebt Обычно сохраняю на диске. В случае что хостер не дает сохранять на диске, хочу написать вариант с базой.
Crazy Я в курсе насчет Content-type. Дело в том, что ты не выводишь обычно только картинку, идет еще хтмл, потому оно давало мусор. Теперь я в отдельный файл беру картинку и потом через img src="этот файл" ее получаю. Сейчас нормально работает и именно в такой форме $upload=implode("",file($picture)); файл получаю на сервере где $picture - имя инпута файл. Google оно конечно хорошо, просто вижу форум, люди на нем вроде отзывчивые, решил спросить. Спасибо.
CutCopyPaste Муж.
соучастник
0
Сообщения: 516
Зарегистрирован: 21.06.03
Откуда: Москва
Сообщение Добавлено: 16 Ноябрь 2004, 11:55:51 
Vadim,
Цитата:
В случае что хостер не дает сохранять на диске, хочу написать вариант с базой.

После сабмита файл сохраняется в TMP директории. Но если хостер не дает сохранять на диске, тем более он не дасть писать в TMP. (личный опыт). Хостер просто upload отключает вообще.

Цитата:
$upload=implode("",file($picture));


это вообще белеберда!!!

Хранение файлов в базе данных mySQL

Если Вы собрались хранить загружаемы файлы в базе данных, Вам необходимо помнить следующие моменты:
Необходимо использовать поле типа BLOB
Перед тем, как класть в базу, не забыть применить к строке mysql_escape_string
При отображении файла необходимо указывать заголовок content/type

Помните, что скрипт отображающий ваш HTML никак не связан со скриптом, который должен выводить изображение. Это должны быть два различные приложения.

Хранение картинок в базе не является хорошем стилем. Гораздо удобней хранить в базе лишь пути к файлам изображений.
http://detail.phpclub.net/article/upload?printVersion=1

_________________
Пьяный русский хакер практически непобедим!
triptyl Муж.
новый человек
0
Сообщения: 88
Зарегистрирован: 11.05.04
Сообщение Добавлено: 16 Ноябрь 2004, 12:20:24 
Полезно иногда бывает делать base64_encode() при сохранении и base64_decode() при выдаче картинки. Также, если все делать по уму, нужно в той же базе в той же записи сохранять еще и тип картинки (jpg/gif/png).
По опыту — картинки лучше на жестком диске хранить. Ибо база распухает до неприличных размеров, и всё тормозит.

_________________
все приборы врут, все, кто с нами, умрут, кольцевые дороги никуда не ведут
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 16 Ноябрь 2004, 13:09:23 

Vadim писал(а):
Дело в том, что ты не выводишь обычно только картинку, идет еще хтмл, потому оно давало мусор.



Так ты выводил картинку в одной куче с HTML? :)
Vadim
новый человек
0
Сообщения: 17
Зарегистрирован: 21.10.04
Сообщение Добавлено: 16 Ноябрь 2004, 20:36:12 
CutCopyPaste Это нормально записывает, я ее взял из какого-то примера когда искал решение, можете проверить.
$upload=implode("",file($picture));
$upload=addslashes($upload);
Вообще сохраняя картинку я записываю в базу ее расширение, а сохраняю как id+"."+ext, просто когда чего-то делаешь всегда чего-то находишь.
triptyl Попробовал с base64_encode, тоже идет, но увеличивает размер файла.
Vadim
новый человек
0
Сообщения: 17
Зарегистрирован: 21.10.04
Сообщение Добавлено: 16 Ноябрь 2004, 21:05:33 
Crazy Я плакать. :cry:
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 16 Ноябрь 2004, 22:06:12 
Vadim, храните картинки в каталоге доступном из веб, скриптом пхп выдавайте уже хтмл код с путём к картинке

_________________
:: metal kick ass ::
Akela
Констататор
12
Сообщения: 3239
Зарегистрирован: 03.05.02
Откуда: Европа
Сообщение Добавлено: 25 Ноябрь 2004, 16:27:48 

Цитата:
Я не спрашивал, МОЖНО ли хранить в базе двоичные данные. Я спросил НАХРЕНА.


Crazy, как обычно краток и прав! :)
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 13 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100