Я реализую сайт, который позволяет пользователям загружать свои файлы. Интересно, как папка для загрузки должна быть структурирована, чтобы я мог легко управлять загруженными файлами в будущем. Должен ли я предоставлять разные пользователи с разными подпапками (например, upload/user1 для user1, upload/user2 для user2 и т. Д.), Или я должен просто поместить их все в одну и ту же папку? И нужно ли переименовывать загруженные файлы? (Я знаю, что многие сайты делают это!)Структура папки для загруженных файлов
ответ
Если вы не используете BLOB, и у пользователей может быть произвольное количество изображений, то я думаю, что вы должны использовать подпапки. Например, вы можете создать подпапку с именем после идентификатора пользователя. Одной из причин этого является то, что когда в папке содержится много файлов, время доступа увеличивается, так как требуется больше времени для поиска файла с указанным именем. Вы также можете переименовать файлы, когда они хранятся, чтобы не было шансов, что их имена будут перекрываться. Просто не забудьте сохранить вновь созданные имена в БД.
Переименование их может быть полезно, если вы когда-либо захотите «спрятать» их всех, кто не вошел в систему, например. Просто сохраните свое исходное имя в БД.
Кроме того, вы всегда можете сохранить все это в таблице SQL в виде BLOB. Может быть несколько GB и позволяет вам связывать имя файла, имя пользователя и все остальное.
Сотрудник однажды сказал мне, что я не должен использовать тип BLOB, потому что он может без необходимости увеличивать db. В любом случае, спасибо за ваш ответ о цели переименования файлов, хотя я все еще смущен о местоположении для загруженных файлов. –
. Он будет расширять базу данных, но использование файлов увеличит каталог, так что вы думаете? Это не замедлит его вообще. – DanRedux
- 1. Использование App_Data для хранения загруженных файлов
- 2. Слушатель PHP для загруженных файлов
- 3. Структура файлов файлов проектов
- 4. Структура папки в окне?
- 5. В файлеuploadload.js можно ли получить имя родительской папки загруженных файлов?
- 6. IntelliJ Нет файлов, загруженных для xyz
- 7. Структура папки Symfony Standard
- 8. Структура папки Django
- 9. Структура папки для проекта C
- 10. обеспечение загруженных файлов безопасно
- 11. Кодирование загруженных файлов имя
- 12. Количество загруженных файлов
- 13. Просмотр файлов, загруженных
- 14. Джанго: Downloading загруженных файлов
- 15. Сохранение загруженных пользователем файлов
- 16. Rename загруженных файлов селен
- 17. Подсчет количества загруженных файлов
- 18. Подсчет полностью загруженных файлов
- 19. Ограниченное количество загруженных файлов
- 20. Сканирование загруженных файлов
- 21. Сравнение двух загруженных файлов
- 22. Обнаружение частично загруженных файлов?
- 23. Список загруженных файлов
- 24. Какова лучшая структура каталогов для обработки больших объемов загруженных изображений?
- 25. Структура папки Appengine для проекта GO
- 26. Структура папки для проекта Express.js и Angular.js
- 27. Структура папки jsp's?
- 28. Rails структура папки
- 29. Obfuscate структура папки - Android
- 30. Структура папки Visual Studio
Я столкнулся с решением, в котором говорится, что я собираю папку для загрузки следующим образом: Основная папка называется 'upload', которая состоит из 3 уровней (например:' upload/0/0/file.jpg'). Когда папка 'upload/0/0' заполнена 1024 файлами, папка' upload/0/1' создается автоматически. Папка 'upload/0' может иметь 1024 подпапки (' upload/0/0' to 'upload/0/1023'). Аналогично, папка 'upload' может также иметь 1024 подпапки. Поэтому максимум, мы можем хранить 2^30 файлов. Если каждый день пользователи загружают в общей сложности 1024 файла, им потребуется 2873 года, чтобы использовать пространство. Как вы думаете, это возможно? –
Я думаю, что было бы лучше сделать что-то вроде этого: имя поддиректория первого уровня по идентификатору пользователя. Следующий шаг действителен только в том случае, если вы назначаете уникальный идентификатор для каждого изображения, загруженного пользователем. Затем вы можете попробовать назвать подкаталог второго уровня как strval ($ imgId% DIVISOR_CHOSEN_BY_YOU). В некоторых случаях это может сократить количество изображений в каждом подкаталоге, я думаю. Обратите внимание, что я далек от эксперта в этом, хотя ... – Exander