Хранение файлов
Все файлы в системе хранятся в базе данных MongoDb через GridFs. Почему выбрано такое решение:
Любое получение и изменение файлов происходит через обращение к базе посредством вызова серверного API, что позволяет настроить систему прав
Упрощение механизмов резервного копирования
Унификация компонентов использующих файлы
Настройки модуля прописываются в основном конфигурационном файле в разделе gridfs
, gridfs : {
host:'localhost',
dbname:'ugmk_files'
}Рекомендуется использовать отдельную базу данных.
На серверной стороне реализация работы с файлами находится в src/gfs.js. Список используемых маршрутов:
post('/api/gfs', multer({ dest: os.tmpdir()}).single('file'),function (req, res, next){}) // добавление
get('/api/gfs/remove/:id', function (req, res, next) {}) // удаление
get('/api/gfs/download/:id', function (req, res, next) {}) // скачивание
get('/api/gfs/:id', function (req, res, next) {}) // получение контента файлаКроме маршрутов, библиотека предоставляет несколько полезных методов для работы с файлами:
CopyFile = function (id, done) // копирование файла
ToDisk = function (id, dir, done) // сохранение файла из базы на дискНа стороне клиента доступны следующие
Шаблон редактирования file - подробнее об использовании шаблонов в редактировании моделей смотрите в разделе формы редактирования
Шаблон редактирования form_image - для добавления картинок
Custom binding user_avatar
Custom binding FileUpload
Метод сохранение файлов MModels.SaveFileToGfs
Пример кода, используемого в модуле filemanager:
В данном примере перед тем как отправить форму на сохранение, предварительно на сервер отправляется файл. Если при добавлении файла не произошло ошибки, то вторым этапом отправляется форма, в теле которой передается id добавленного файла.
Last updated
Was this helpful?