В общем интересен вопрос такой можно ли хранить картинку в базе данных? Сколько можно килобайт (мегабайт) записать одним запросом в базу и каким максимальный размер может вместить ячейка в таблице базы LONGTEXT например, или выбрать другую для записи, просветите непосвященных в тему пожалуйста.
Можно, а зачем?В общем интересен вопрос такой можно ли хранить картинку в базе данных?
Максимальный размер:
TINYTEXT: 255 (2^8 -1) bytes
TEXT: 65,535 (2^16 -1) bytes = 64 KiB
MEDIUMTEXT: 16,777,215 (2^24 -1) bytes = 16 MiB
LONGTEXT: 4,294,967,295 (2^32 -1) bytes = 4 GiB
(источник)
Для совместного редактирования, аля такое только попроще sketch.io/sketchpad/, пока идея такая поле — редактор рисовалка, при сохранении — льем в базу Base64 картинку, второй юзер просматривая материал может отредактировать запись, как то так пока мысльМожно, а зачем?
Но если хочется изобретать велосипеды дело ваше
Так я и советуюсь и спрашиваю поэтому…А почему не хотите сохранять на жесткий а затем загружать оттуда же? Зачем сложно если можно просто?)))
Во первых цель — просмотр изображения и совместное редактирование, если хранить на диске (причем я немного не понял о каком вы сохранении на жесткий — серверном или локальной машине пользователя?), буду считать что о серверном речь, вообщем получается права на запись и изменение файлов с изображением, как рулить?, например если нам надо только друзьям сделать редактирование и просмотр? В случае хранения в базе мы получаем бонусом все стандартные механизмы разруливания правами системы… Вот потому и задумался именно о хранении в базе данных…
Права у папки ..\upload\your_name ставите на запись и вроде проблем никаких нет.вообщем получается права на запись и изменение файлов с изображением, как рулить?
Прежде чем показывать картинку пользователю в редакторе вы проверяете все его права. Если все хорошо тогда выводите картинку, если нет, показываете сообщение или пустое поле. Механизм один к одному такой же, место хранения изображений не имеет значения.
Разницы получается никакой кроме утяжеления БД при хранении картинок там. Превьюшки будете создавать? Еще дополнительная нагрузка на БД.
Естественно, есть два варианта хранения пути к рисунку:
1. Если все рисунки в общей куче (что не рекомендуется) то путь к файлу жестко прописывается в *.tpl
2. Если у вас для каждого пользователя (категории, раздела, статьи и.тд) назначается своя папка, вам необходимо предусмотреть вычисление пути к рисунку во время его загрузки, а затем запись его по вычисленному адресу. В этом случае хранить путь (чтобы не вычислять его каждый раз) лучше в базе, в том же поле, что и имя рисунка в виде полного пути.
Есть еще вопрос такого плана, взаимодействие с картинками, 766- права, если зная путь картинки мы спокойно можем ее просмотреть и редактировать и удалить, так? — и потенциально человек которому очень хочется добраться до материала другого человека может ее посмотреть и отредактировать зная путь… Как защититься от этого? В случае хранения в базе — это же сложнее сделать?Разницы получается никакой кроме утяжеления БД при хранении картинок там.
Да уже, есть такое...вот уж у вас паранойя!
Еще раз спасибо за советы, попробую оба варианта, первым в файлах как посоветовали, вторым в базе, потом по тестирую с ребятами что в итоге получиться, и какие глюки будут при разном типе хранения…