Размеры в базе данных

#1 19 августа 2016 в 21:45
Уж не знаю как сформулировать название заголовка.
В общем интересен вопрос такой можно ли хранить картинку в базе данных? Сколько можно килобайт (мегабайт) записать одним запросом в базу и каким максимальный размер может вместить ячейка в таблице базы LONGTEXT например, или выбрать другую для записи, просветите непосвященных в тему пожалуйста.
#2 19 августа 2016 в 22:13

В общем интересен вопрос такой можно ли хранить картинку в базе данных?

jorgovich
Можно, а зачем?

Максимальный размер:
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
(источник)
#3 19 августа 2016 в 22:28
Val,

Можно, а зачем?

Для совместного редактирования, аля такое только попроще sketch.io/sketchpad/, пока идея такая поле — редактор рисовалка, при сохранении — льем в базу Base64 картинку, второй юзер просматривая материал может отредактировать запись, как то так пока мысль
#4 20 августа 2016 в 13:49
А почему не хотите сохранять на жесткий а затем загружать оттуда же? Зачем сложно если можно просто?)))
Но если хочется изобретать велосипеды дело ваше smile
#5 20 августа 2016 в 15:49
Val,

А почему не хотите сохранять на жесткий а затем загружать оттуда же? Зачем сложно если можно просто?)))

Так я и советуюсь и спрашиваю поэтому…
Во первых цель — просмотр изображения и совместное редактирование, если хранить на диске (причем я немного не понял о каком вы сохранении на жесткий — серверном или локальной машине пользователя?), буду считать что о серверном речь, вообщем получается права на запись и изменение файлов с изображением, как рулить?, например если нам надо только друзьям сделать редактирование и просмотр? В случае хранения в базе мы получаем бонусом все стандартные механизмы разруливания правами системы… Вот потому и задумался именно о хранении в базе данных…
#6 20 августа 2016 в 18:27
Конечно о серверном =)

вообщем получается права на запись и изменение файлов с изображением, как рулить?

jorgovich
Права у папки ..\upload\your_name ставите на запись и вроде проблем никаких нет.

Прежде чем показывать картинку пользователю в редакторе вы проверяете все его права. Если все хорошо тогда выводите картинку, если нет, показываете сообщение или пустое поле. Механизм один к одному такой же, место хранения изображений не имеет значения.
Разницы получается никакой кроме утяжеления БД при хранении картинок там. Превьюшки будете создавать? Еще дополнительная нагрузка на БД.
#7 21 августа 2016 в 08:55
jorgovich, Картинки в виде файлов храните на сервере (права им назначите 766) в той папке, где вы сами определили, а в базе — только имя файла после загрузки.
Естественно, есть два варианта хранения пути к рисунку:
1. Если все рисунки в общей куче (что не рекомендуется) то путь к файлу жестко прописывается в *.tpl
2. Если у вас для каждого пользователя (категории, раздела, статьи и.тд) назначается своя папка, вам необходимо предусмотреть вычисление пути к рисунку во время его загрузки, а затем запись его по вычисленному адресу. В этом случае хранить путь (чтобы не вычислять его каждый раз) лучше в базе, в том же поле, что и имя рисунка в виде полного пути.
#8 22 августа 2016 в 10:30
Val, Странник, Спасибо за советы!

Разницы получается никакой кроме утяжеления БД при хранении картинок там.

Есть еще вопрос такого плана, взаимодействие с картинками, 766- права, если зная путь картинки мы спокойно можем ее просмотреть и редактировать и удалить, так? — и потенциально человек которому очень хочется добраться до материала другого человека может ее посмотреть и отредактировать зная путь… Как защититься от этого? В случае хранения в базе — это же сложнее сделать?
#9 22 августа 2016 в 11:41
jorgovich, вот уж у вас паранойя! Ну, поставьте 764
#10 22 августа 2016 в 12:01
Странник,

вот уж у вас паранойя!

Да уже, есть такое...
Еще раз спасибо за советы, попробую оба варианта, первым в файлах как посоветовали, вторым в базе, потом по тестирую с ребятами что в итоге получиться, и какие глюки будут при разном типе хранения…
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.