Всего 3 изображения на пользователя. Нужно ли мне создавать умную структуру каталогов? - PullRequest
0 голосов
/ 23 февраля 2012

Я прочитал несколько вопросов о хранении изображений в базе данных, в отличие от папок на сервере, и я решил использовать папки, но мне интересно, насколько я должен быть умным.Я нашел много вопросов о хранении тысяч изображений, но я просто хочу сохранить три изображения на пользователя (на самом деле одно изображение в трех вариантах).

В этом вопросе спрашивающий сначала предлагает структуру каталогов на основе имени пользователя (которое в его случае и в моем случае является адресом электронной почты).Его каталоги будут выглядеть примерно так:

/images/domain.com/user/imagename.png

Это нормально для использования в моем случае?Я не старожил в этом, поэтому мне интересно, есть ли что-то, о чем я не думаю в плане безопасности или производительности, о которой мне следует беспокоиться.Я надеюсь сохранить все изображения в папке за пределами корневого каталога, поэтому не думаю, что у пользователей есть проблема с доступом к файлам, на которые у них нет прав доступа, но есть и другие причины, по которым вы можете захотеть использовать хэшфайл и использовать его для создания структуры каталогов или использовать какой-то другой вид псевдослучайно сгенерированного gobbledegook вместо части имени пользователя для создания структуры каталогов?

Редактировать: Я использую phpи фотографии - только фотографии профиля, если это имеет какое-либо значение.Они в основном видны любому пользователю при поиске других пользователей, поэтому, когда речь заходит о безопасности, я просто не хочу, чтобы люди могли иметь горячую ссылку на фотографию пользователя или перейти к ней напрямую, введя URL-адрес, которыйприводит к этому.Это, если, как я уже сказал, есть другие проблемы безопасности, о которых я должен думать, но не знаю, о которых нужно думать.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

Просто в большинстве случаев, когда вы говорите «сохранить изображения в базе данных», фактическая вещь, хранящаяся в базе данных, - это имя файла или путь к файлу изображения, а не фактическое изображение.

Если вы уже понимаете различия и убеждены в необходимости использования структуры папок, основная причина создания хэша для структуры папок состоит в том, чтобы предотвратить несанкционированный доступ кого-либо, изменившего каталог на:

/images/domain.com/itsmequinn/imagename.png

и получив доступ к другомуфайлы пользователя.

Лично я не рекомендовал бы папку для каждой структуры пользователя, так как считаю, что это грязное решение.Я не буду подробно останавливаться на этом, но вы можете проверить пару предыдущих вопросов здесь:

Хранение изображений в БД - да или нет?

Хранить картинкив виде файлов или в базе данных для веб-приложения?

0 голосов
/ 23 февраля 2012

Я не понимаю, почему хеширование файлов было бы полезно , если бы вы не ожидали, что многие из них будут идентичны;тогда вы могли бы сэкономить много памяти.

Если пользователи когда-либо смогут редактировать свои имена пользователей (а вы не можете сказать будущее!), то я не буду использовать это в структуре.Используйте первичный ключ базы данных или что-то, что никогда не изменится.

Если вы действительно хотите немного больше структуры, вы все равно можете разделить идентификаторы по уровням структуры, например, пользователь сid 1234 будет иметь изображения, хранящиеся по адресу:

/images/domain.com/12/34/imagename.png

Что бы по крайней мере означало, что у вас не было более сотни каталогов, когда вы смотрите на список ...

...