Разработка расширений
Расширение движков хранения
Серверная часть
-
Унаследоваться от
StorageTypeСоздайте новый класс и реализуйте методы
make()иdelete(), а при необходимости переопределите хуки вродеgetFileURL(),getFileStream(),getFileData().
Пример:
- Зарегистрировать новый тип
Подключите новую реализацию хранилища в жизненном циклеbeforeLoadилиloadплагина:
После регистрации конфигурация хранилища появится в ресурсе storages, как и встроенные типы. Конфигурацию, предоставляемую StorageType.defaults(), можно использовать для автозаполнения форм или инициализации записей по умолчанию.
Расширение типов файлов на фронтенде
Для загруженных файлов вы можете показывать разный предпросмотр на фронтенде в зависимости от типа файла. Поле вложений менеджера файлов имеет встроенный предпросмотр в браузере (встраивается в iframe), который поддерживает предпросмотр большинства форматов (например, изображений, видео, аудио и PDF) прямо в браузере. Если формат не поддерживается браузером для предпросмотра или требуется особое взаимодействие, можно расширить компонент предпросмотра по типу файла.
Пример
Например, если вы хотите подключить пользовательский онлайн-предпросмотр Office-файлов, используйте следующий код:
Здесь filePreviewTypes — это объект входа, который предоставляет @nocobase/plugin-file-manager/client для расширения предпросмотра файлов. Используйте метод add, чтобы добавить дескриптор типа файла.
Каждый тип файла должен реализовать метод match(), который проверяет, подходит ли файл. В примере используется matchMimetype для проверки свойства mimetype. Если MIME совпадает с типом docx, считается, что этот тип нужно обработать; если нет — будет использована встроенная обработка.
Свойство Previewer в дескрипторе — это компонент предпросмотра. Когда файл соответствует типу, этот компонент будет отрисован в диалоге предпросмотра. Вы можете вернуть любой React-вид (например, iframe, плеер или график).
API
filePreviewTypes
filePreviewTypes — глобальный экземпляр, импортируется из @nocobase/plugin-file-manager/client:
filePreviewTypes.add()
Регистрирует новый дескриптор типа файла в реестре типов. Тип дескриптора — FilePreviewType.
FilePreviewType
match()
Метод сопоставления формата файла.
Входной параметр file — объект данных загруженного файла, содержащий свойства, которые можно использовать для проверки типа:
mimetype: описание mime-типаextname: расширение файла, включая "."path: относительный путь хранения файлаurl: URL файла
Возвращает boolean, указывающий, соответствует ли файл.
getThumbnailURL
Возвращает URL миниатюры для списка файлов. Если возвращаемое значение пустое, будет использовано встроенное изображение-заполнитель.
Previewer
React-компонент для предпросмотра файлов.
Входящие Props:
file: текущий объект файла (может быть строкой URL или объектом сurl/preview)index: индекс файла в спискеlist: список файлов

