Как запихнуть и вытащить картинку из БД?

Smart-S

Новичок
Как запихнуть и вытащить картинку из БД?

Помогите решить проблему:
Как запихнуть и вытащить картинку из БД?

Хочу при закачке файлов добавлять картинку не в каталог в виде файла, а в запись Базы Данных! Как мне это сделать? И как мне получить ее из БД и отобразить скриптом для пользователя???
 

440hz

php.ru
Smart-S
я, конечно, не авторитет, но ИМХО в файловой системе будет и быстрее и лучше, а в базе хранить ID картинки и по необходимости доп. инфу.
 

Smart-S

Новичок
Это все понятно, я так и делал до сих пор, но сейчас необходимость возникла именно в этом!
 

ForJest

- свежая кровь
Вставка
1. Делаешь поле для картинки BLOB или LONGBLOB
2. Читаешь картинку в строку
3. Делаешь INSERT INTO(`f_image`) VALUES ('.mysql_escape_string($str).') или
Делаешь INSERT INTO(`f_image`) VALUES ('0x'.bin2hex($str));
картин* баз*
изображен* хранить
 

440hz

php.ru
Smart-S
можно узнать про "необходимость"? не глумления ради а любопытсва для?
 

Smart-S

Новичок
Необходимость в том, чтобы полностью исключить возможность просмотра картинок пользователем, который может с легкостью указать полный путь на ее месторасположение на сервере!

А база - она и в Африке база! нет необходимости возиться с файлами ...
 

440hz

php.ru
Автор оригинала: Smart-S
Необходимость в том, чтобы полностью исключить возможность просмотра картинок пользователем, который может с легкостью указать полный путь на ее месторасположение на сервере!
гм ... HTML отдает ссылку, а не саму картинку и конечному броузеру пофиг где она у тебя лежит в базе или в файле когда он запрашивает ее. Если только тот скрипт, который будет ее отдавать, не будет следить кто и как запрашивает, но об этом ужо писалось и не раз.
 

Steamroller

Новичок
Автор оригинала: 440hz
Smart-S
я, конечно, не авторитет, но ИМХО в файловой системе будет и быстрее и лучше, а в базе хранить ID картинки и по необходимости доп. инфу.
Быстрее это бесспорно. Но не лучше. Возможностей меньше.
 

440hz

php.ru
Автор оригинала: Steamroller
Быстрее это бесспорно. Но не лучше. Возможностей меньше.
а не на оборот? =) лучше нагружать базу чем отдавать нагрузку серверу/проксе/броузеру?
 

Steamroller

Новичок
а не на оборот? =) лучше нагружать базу чем отдавать нагрузку серверу/проксе/броузеру?
Что не наоборот? :) Ты написал, что в базе медленнее, я с этим согласился. :) Так что если задача позволяет хранить в файлах - то так и надо.
каких возможностей?
Да например стандартная задача на форумах - доступ к аттачам контролировать. Чтобы человек, который доступ в какой-то раздел не имеет, не мог смотреть картинки, которые там в сообщениях. Соответственно надо скриптом отдавать. Можно конечно сделать, чтобы скрипт данные из файла брал, и отдавал, но тут уже преимущества хранения в файлах утрачиваются.
Или скажем вопрос безопасности. Когда картинки в файлах - надо чтобы юзер, от которого апач ходит, туда писать мог (ну чтоб в админке там или те же самые аттачи юзера клали). Соответственно вашему соседу по хостингу скрипт расковыряют, скачают к вам в папку эксплоит, и запустят оттуда.
 
Steamroller
Или скажем вопрос безопасности. Когда картинки в файлах - надо чтобы юзер, от которого апач ходит, туда писать мог (ну чтоб в админке там или те же самые аттачи юзера клали). Соответственно вашему соседу по хостингу скрипт расковыряют, скачают к вам в папку эксплоит, и запустят оттуда.
а мы в этой папочке, раз уж там картинки, .htaccess -ом запретим запускать скрипты...

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

Steamroller

Новичок
а мы в этой папочке, раз уж там картинки, .htaccess -ом запретим запускать скрипты...
На большинстве ОС если в папку разрешено писать, то и файл .htaccess в ней разрешено переименовать во что-нибудь безвредное.
- не вижу преимуществ хранения в базе....
Ну вот у тебя <img src="/images/attachments/292.jpg"> - как ты при запросе этого файла определишь, имеет ли запрашивающий достаточно прав для его просмотра?
 
Steamroller
Ну вот у тебя <img src="/images/attachments/292.jpg"> - как ты при запросе этого файла определишь, имеет ли запрашивающий достаточно прав для его просмотра?
ну, логино, что файл, предназначенный только какой-то ограниченной группе пользователей - отдается скриптом, только вот я, все равно, не вижу никаких выгод....

На большинстве ОС если в папку разрешено писать, то и файл .htaccess в ней разрешено переименовать во что-нибудь безвредное.
Если уж исходить из твоей логики, то любая папка, в которой разрешена запись - лишняя....
т.к. если
вашему соседу по хостингу скрипт расковыряют
то, в эту злополучную папку положат что-нить плохое...
 

Steamroller

Новичок
ну, логино, что файл, предназначенный только какой-то ограниченной группе пользователей - отдается скриптом, только вот я, все равно, не вижу никаких выгод....
Раз он скриптом отдается - преимущество по скорости по сравнению с отдачей статического файла теряется. (Вполне вероятно, что через базу даже быстрее будет, при условии что для проверки acl к ней уже подключение создается). А скрипт получается даже проще - не надо куда-то дополнительно за данными лазить, все одним запросом из базы достается.
Если уж исходить из твоей логики, то любая папка, в которой разрешена запись - лишняя....
Именно. :) Любая папка, открытая всем на запись - потенциальная дыра в безопасности.
 

440hz

php.ru
как то мы все уже не о том, ну хочет человек картинку в базу - тогда ForJest ответил - остальное - вопросы спорные и каждый случай надо рассматривать отдельно
 

Фанат

oncle terrible
Команда форума
ForJest
потрудись ответить на вопрос полностью.
тебя спрашивали не только как положить, но и как получить ее из БД и отобразить скриптом для пользователя?
И будь добр с конкретным рабочим кодом, чтобы было понятнее.
 

ForJest

- свежая кровь
Фанат
Непременно. Конечно-конечно. Только, пожалуйста, будь так добр (добр - без раздражения или злобы) назови мне конкретные причины, по которым я должен потрудиться?

-~{}~ 05.10.05 20:35:

Ну или просто скажи что тебе не понятно конкретно, я постараюсь тебе доходчиво объяснить.
 

Фанат

oncle terrible
Команда форума
да я не настаиваю. не хочешь - как хочешь =)
мне будет приятно в обоих случаях ;-)
 
Сверху