Я склонен думать о пользовательских загрузках как о просто другом типе пользовательских данных, и поэтому все это входит в базу данных. Очевидно, убедитесь, что база данных, которую вы собираетесь использовать для этого, является хорошим выбором для этого, например, база данных 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 файлов с одинаковыми именами, все они уникальны.