Систематический способ хранения фотографий для социального сайта - PullRequest
0 голосов
/ 10 декабря 2011

Я создаю простой социальный сайт, где пользователи могут загружать фотографии.Я собираюсь хранить изображения в файловой системе.Когда пользователь загружает изображение, как вы думаете, я должен назвать файлы?Я не хочу просто маркировать картинки последовательными номерами, поэтому я подумал о * userid_dateinseconds_width.jpg *.

Кроме того, мне нужно будет хранить информацию о каждом изображении в базе данных - например, кому он принадлежит, в каком фотоальбоме он находится и т. Д. Как бы вы порекомендовали структурировать таблицу базы данных для этого?

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Мне нравится ответ Натерады, но я вижу одну проблему. Когда вы называете файлы таким образом, вы открываете внутреннюю часть вашей системы (идентификаторы, которые вы используете) любому, кто может просматривать изображение. Facebook обычно называл свои изображения таким образом, что идентификатор пользователя был частью пути к изображению - в результате, если кто-то сохранил и повторно разместил изображение с Facebook, просмотрев имя файла, люди могли бы отследить, кто это был. изображение. Я бы предложил такую ​​схему именования, но затем поместил бы ее через хеш.

Использование хеша также может помочь вам обойти проблему, о которой упоминает PeeHaa, из-за ограниченного числа файлов в каталоге. Вы можете хешировать имя файла, затем взять первую букву или две буквы в качестве каталога и таким образом разумно разделить изображения между 26 или 26 ^ 2 каталогами в зависимости от того, сколько изображений у вас есть. Удачи.

0 голосов
/ 10 декабря 2011

Лично я бы использовал это как структуру.Если возможно, я бы изменил размер изображения, если это изображение профиля, чтобы оно было стандартным!

id        autoincrement
u_id      id of user it belongs to
album_id  id of the album it belongs to (or name)
datetime  date and time of pic upload
path      path of where its kept, if its a directory structure

width     if you need to
height    if you need to

Кроме того, для имени файла я бы использовал: userid_imageid_datetime.jpg

Но это только я!

...