Лучшая практика в создании файлового менеджера для пользователя
-
01-10-2019 - |
Вопрос
Я собираюсь сделать файлы, менеджер ресурсов для пользователя. Мой сайт предоставляет услугу помочь пользователям создавать блог, веб-сайт и разрешить пользователю загружать свои ресурсы. Я создам структуру папки, как приведенную ниже. Любое предложение?
usercontents
--user1
----folder1
----folder2
--user2
--user3
----my images
Должен ли я использовать базу данных для указания этих файлов?
Решение
Если бы я сделал что-то подобное, во-первых, я бы сделал следующее:
- Ограничить типы файлов до нескольких указывать (изображения, MP3, MP4, может быть, SWF);
- нормализовать имена пользователей или ограничить их буквенно-цифровой, чтобы у меня нет конфликтов папок имени пользователя;
- нормализовать имена файлов, чтобы
my awesome mp3 file (some comment here).mp3
превращается вmy-awesome-mp3-file-some-comment-here.mp3
; - Проверьте наличие конфликтов имени файла, чтобы пользователь загрузил файл с тем же именем, что и предыдущий перезаписи не произойдет (повернуть дубликат
screenshot.png
вscreenshot-2.png
); - Определенно переместите обработку подпунктов в базу данных, оставляя структуру файла в каталогах пользователей.
Дополнительная оптимизация:
- Храните файл Checksums в базе данных, чтобы избежать хранения дубликатов файлов в файловой системе. Предел дубликата проверки на собственные файлы.
Я написал сайт обмена файлами, управлял сообществом, и я думаю, что он показывает. :)
Другие советы
Это имеет смысл использовать базу данных, так как тогда только файлы, добавленные через ваш интерфейс, будут доступны только для просмотра только тогда (предполагается, что вы читаете список файлов из базы данных, а не фактическую файловую систему).