Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Храние изображений в БД
Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2011
Помог: 0 раз(а)
Подскажите как это делается и расскажите подводные камни
caballero
Отправлено: 16 Октября, 2011 - 23:33:49
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
делается просто читаешь файл и пихаешь в blob поле
так же и обратно - прочитал поле вывел echo
в mysql это проще чем в любой другой базе
подводные камни бОльшая нагрузка на процессор
бонус - консистентность данных и возможность управлять доступом средствами PHP
таблицу с блобами лучше отделить от остальных полей (имя файоа там тип и пр. путем создания отношения один-к-одному (плюс партицирование таблицы если раздуется в будущем)
если начнется холивар где хранить картинки в базе или файлах - не обращай внимания
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
зачем лишний раз нагружать БД? (Добавление)
caballero пишет:
консистентность данных и возможность управлять доступом средствами PHP
закрываем каталог для прямого доступа, оставляем права только веб-серверу, делаем маленький скрипт где пишем нужные заголовки и делаем include нужного файла с изображением.
ладно если еще это мускул, на одной машине с веб сервером, а если это postgre на удаленной машине, и изображения достаточно большие. последствия могут быть самыми печальными.
----- if(time()>1356048000) die();
caballero
Отправлено: 17 Октября, 2011 - 00:10:39
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
закрываем каталог для прямого доступа, оставляем права только веб-серверу, делаем маленький скрипт где пишем нужные заголовки и делаем include нужного файла с изображением.
И это вместо простого sql запроса который выдает картинку в альбоме если залогинился Вася и не выдает если Петя.
Цитата:
ладно если еще это мускул, на одной машине с веб сервером, а если это postgre на удаленной машине, и изображения достаточно большие.
А если это оракл или mssql с полем типа FILESTREAM то вообще никаких последствий. Зачем строить предположения?
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
caballero пишет:
И это вместо простого sql запроса который выдает картинку в альбоме если залогинился Вася и не выдает если Петя.
проверка авторизации в обоих случаях одинакова, а include(file) будет выглядеть значительно проще и понятней "простого запроса", с последующим его выводом.
caballero пишет:
Зачем строить предположения?
это не предположения а варианты, и то с каким sql сервером работает ТС, непосредственно влияет на наилучший вариант реализации. и если это действительно
Цитата:
оракл
то лучше использовать локаторы BFILE.
----- if(time()>1356048000) die();
Minigun
Отправлено: 18 Октября, 2011 - 20:16:17
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2011
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.