Как организовать файлы в файловой системе для сайта типа загрузки? - PullRequest
0 голосов
/ 20 февраля 2010

Мне интересно, есть ли лучшие практики для организации файлов в файловой системе для сайта, который сосредоточен вокруг пользователей, загружающих файлы. (Не такой хостинг, как Imageshack, а скорее addons.mozilla.org)

Или я переоцениваю это и должен поместить все в одну папку?

Ответы [ 2 ]

1 голос
/ 20 февраля 2010

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

Если это имеет смысл, я пытаюсь использовать шаблон URL, который имеет смысл в контексте шаблона использования сайта, например:

example.com/username/users_file.jpg

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

example.com/files/abc123
example.com/files/abc123/
example.com/files/abc123/users_file.jpg

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

Выполнение этого означает, что независимо от того, как называется исходный файл, он всегда уникален для пользователя. Даже если пользователь желает загрузить 100 файлов с одинаковыми именами, все они уникальны.

0 голосов
/ 20 февраля 2010

Во-первых (и, вероятно, очевидно), поместите файлы пользователей в какое-то специальное место, чтобы они не рисковали перезаписывать другие вещи.

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

Так что, если бы я загружал "smile.jpg", вы могли бы сохранить его там: s / smile.jpg

Если вы очень популярны и у вас все еще слишком много файлов, вы можете использовать больше букв. И если вы ожидаете, что у вас будет множество пользователей, а у вас есть тонны серверов, вы можете представить себе, как разделить работу, сэкономив s .example.com / upload / s / smile.jpg (но на самом деле, если у вас есть тонны серверов, у вас, вероятно, уже есть прозрачный способ разделения хранилища и загрузки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...