Я работаю над дизайном базы данных для базовой фотогалереи, которую каждый пользователь может загрузить несколько изображений.MySQL Design for User Photo Gallery
Прямо сейчас вот то, что у меня есть:
photo_gallery
photo_id - image - sort_order - user_id
1 - test.jpg - 1 - 1
2 - another_photo.jpg - 2 - 1
И тогда на моей структуре папок Я хотел бы создать новую папку, например, так: изображений/фото-галерея/ и сохраните изображения там. Теперь я должен создать папку для каждого user_id и хранить их конкретные изображения в этой папке/
Так что в этом случае: изображения/фото-галерея/1/test.jpg и все фото пользователя 1 будет там?
Кроме того, для повторного калибровки, я думаю об использовании smart image resizer, поэтому я могу просто сохранить исходную фотографию, и если я хочу изменить ее размер до определенного размера, я могу просто вызвать ее, используя сценарий, например:/image. php? width = 200 & height = 200 & image = test.jpg.
Должен ли я быть хэшированием этих имен файлов? Я что-то пропустил? Любые предложения о том, как улучшить это?
Спасибо!
Это хороший ответ. Я просто хотел подчеркнуть возможность дублирования имени файла/файла. Если есть вероятность, что пользователь загрузит изображение с тем же именем или что пользователи загружат одно и то же изображение (в случае, если вы основываете имя файла на хеше самого изображения), вам необходимо убедиться, сначала проверяем дублирование (file_exists()) и обрабатываем его каким-то образом. Вы также можете добавить mysql photo_id в конец файла ('_'.photo_id), чтобы сохранить его уникальным и, возможно, использовать его как ярлык идентификации в будущем. –
Спасибо за отличный ответ. Всего пару вопросов. Для сохранения пути лучше не хранить его как: 0a/0a1b2c3d.jpg вместо того, чтобы включать папку с изображениями, если я когда-либо ее изменю? А также, какая польза в этой ситуации для хранения исходного имени файла? – Drew
@ Дрю: Хороший улов. Да, было бы лучше сохранить путь изображения в базе данных относительно корневого пути вашего изображения (который вы можете установить в файле конфигурации). Я пересмотрю ответ. Что касается исходного имени файла, это действительно зависит от цели галереи. Если пользователю было бы полезно просмотреть исходное имя файла (или загрузить изображение с его исходным именем, а не как казалось бы случайное имя), включите его. Если имя файла не имеет значения, пропустите его. Это красота создания вашей собственной системы: вы можете идеально ее использовать по своему предназначению. –