Предпросмотр файлов
File managerCommunity Edition+В интерфейсах, содержащих поля файлов (включая поля вложений), вы можете предварительно просматривать файлы, щёлкнув по миниатюре файла или значку. Встроенная функция предпросмотра поддерживает различные типы файлов, включая изображения, PDF и большинство типов файлов, которые браузеры поддерживают нативно.

Для типов файлов, которые не поддерживают нативный предпросмотр, вы можете включить функциональность предпросмотра, установив или расширив соответствующие плагины предпросмотра файлов. Например, после установки плагина предпросмотра Office-файлов вы сможете просматривать файлы Word, Excel и PowerPoint.
В настоящее время NocoBase предоставляет следующие плагины предпросмотра файлов:
Как работает предпросмотр PDF
NocoBase выбирает способ предпросмотра в зависимости от того, совпадает ли origin URL PDF-файла с origin текущей страницы:
Способ предпросмотра зависит от origin URL, а не напрямую от названия механизма хранения. Локальное хранилище, доступное через отдельный файловый домен, считается междоменным. Внешнее хранилище, доступное через прокси NocoBase с тем же origin, считается хранилищем того же origin.
Локальное хранилище или URL того же origin
URL локального хранилища обычно начинается с /storage/uploads/ и имеет тот же origin, что и страница NocoBase. Во время предпросмотра NocoBase читает данные PDF и передает их встроенному PDF.js для отображения страниц и текста.
Этот способ не зависит от встроенного PDF-ридера браузера. Даже если ответ из соображений безопасности использует Content-Disposition: attachment, NocoBase может прочитать файл и отобразить его в компоненте предпросмотра. URL файла должен быть доступен в текущей сессии.
Внешнее хранилище или URL другого origin
OSS, S3, COS и CDN обычно используют отдельный домен. NocoBase помещает URL PDF в iframe, поэтому результат определяют браузер и заголовки ответа службы хранения.
Чтобы открыть PDF в iframe, служба хранения обычно должна возвращать Content-Type: application/pdf и не должна принудительно скачивать файл с помощью Content-Disposition: attachment. Если ответ требует скачивания, браузер загружает файл напрямую, и NocoBase не может изменить это поведение во frontend.
Для загрузки PDF другого origin в iframe CORS не требуется. Однако кнопка скачивания читает файл через fetch и создает Blob. Поэтому для междоменного скачивания служба хранения должна разрешить CORS-запросы с сайта NocoBase.
Особенности Aliyun OSS
В некоторых случаях стандартный домен Aliyun OSS принудительно скачивает файл, возвращая Content-Disposition: attachment и x-oss-force-download: true. Изображения при этом могут отображаться нормально, а PDF в iframe скачивается.
Обычно проблему можно решить, привязав к bucket пользовательский домен и настроив NocoBase на доступ к файлам через него. Инструкции по настройке и диагностике см. в разделе Распространенные проблемы Aliyun OSS.
Границы безопасности междоменного предпросмотра
Некоторые браузеры или PDF-ридеры могут поддерживать скрипты, формы и другой интерактивный контент внутри PDF-файлов. Если файл для предпросмотра получен из недоверенного источника, нужно учитывать границы безопасности для выполн ения скриптов.
Рекомендуем изолировать домен доступа к файлам от доменов сайта NocoBase и API. Например, отдавайте файлы из OSS, S3, COS или CDN через отдельный домен, а не через тот же origin, что и frontend или API NocoBase.
Если домен файлов отличается от домена API, а API не включает CORS-доступ для домена файлов, скрипты, выполняющиеся в среде предпросмотра PDF, обычно ограничиваются политикой одного источника браузера. Они не могут напрямую читать страницу NocoBase, хранилище браузера или ответы API.

