Лучшие практики для хранения загруженных файлов в файловой системе - PullRequest
5 голосов
/ 01 декабря 2008

Какова практика хранения файлов, загруженных пользователями?

В настоящее время я использую следующий способ хранения файлов:

<web_app_root>/course_material/<term_id>/<course_id>/<file_id>

Как видите, файлы хранятся в соответствии с ключами в базе данных. Я подумал, что это безопаснее, поскольку мне не нужно было фильтровать имена файлов и превращать небезопасные символы в безопасные.

Однако я начинаю новый проект и хотел знать, было ли плохой идеей связать файловую систему веб-приложения с базой данных. Должен ли я хранить файлы в более удобочитаемом формате?

<web_app_root>/course_material/<term_name_underscored>/<course_name_underscored>/<file_name_underscored>

Если это так, каковы лучшие способы отфильтровать имена файлов, чтобы быть безопасными? Или способ, которым я сейчас занимаюсь, - это лучшая практика?

Ответы [ 2 ]

1 голос
/ 01 декабря 2008

Я всегда просто сохранял файлы в каталоге с уникальными именами файлов на основе GUID и сопоставлял guid с файлом в БД. Если вы не просматриваете файлы вручную, возможно, это самое простое решение (также позволяет обойти недопустимые символы).

Другой вариант - хранить их как BLOBS в базе данных. Я также сделал это - но он должен был заполнить реплицированный сценарий аварийного восстановления, который должны обрабатываться современными устройствами NAS.

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

0 голосов
/ 01 декабря 2008

Предлагаю вам тогда взять из web_app_root.

Мне нравится, как ты делаешь в первом примере.

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