Используйте File для одного документа и Files для списка. Это отдельные типы полей для PDF, презентаций, таблиц, архивов и других разрешённых форматов. Они не создают уменьшенные варианты изображений и не заменяют Image/Gallery.
Настроить в Generator UI
- В Project settings → Storage → File storage выберите Local files или S3. Настройка независима от Image storage: изображения и документы могут храниться отдельно.
- В Content откройте persistent-сущность → Add field → File или Files.
- Задайте имя и обязательность. Для File settings заполните разрешённые расширения, например
pdf, pptx, docx, и максимальный размер одного файла. - Для Files задайте Maximum files. Диапазон — 1–50, стандартное ограничение — 10.
- Finish → Save → Generate. Просмотрите и примените необходимые миграции через
make migrate.
Максимальный размер — 150 MiB на один файл (157286400 байт); можно задать меньше. Это не общий лимит списка. Проверьте также ограничения внешнего Nginx/reverse proxy: слишком маленький client_max_body_size остановит upload до backend.
Расширения задаются без точки. Сервер проверяет загрузку, но эта проверка не является антивирусом и не гарантирует безопасность содержимого. При необходимости дополнительные проверки и обработку подключает ваша команда.
Работать в системе администрирования
Откройте запись, выберите файл и сохраните изменения. В карточке доступны сведения о документе и скачивание; для Files сохраняется список вложений. Права Create/Update/Delete и Demo mode ограничивают изменение данных на сервере. Не рассчитывайте только на отключённую кнопку в браузере.
File/Files не являются строковыми полями: к ним нельзя включить обычные searchable/filterable/sortable, unique или primary key. Обычный URL вместо управляемого файла используйте только когда хранение и жизненный цикл документа поддерживаются другой системой.
Что получает API
Ссылка на файл содержит assetId и доступные метаданные name, mimeType, size, url. Для списка API возвращает набор таких ссылок. Не конструируйте assetId из имени файла и не связывайте записи прямым SQL без учёта native inventory. Доступ к скачиванию проверяется серверной реализацией; наличие значения в custom-интерфейсе само по себе не выдаёт право на файл.
Постоянный Local-путь и параметры S3 задаются в окружении/deployment-профиле. Credentials не помещаются в манифест и публичную документацию.
Перенос и резервные копии
БД хранит ссылки и метаданные, а содержимое — отдельное file storage. Одного pg_dump недостаточно для переноса PDF или видео. Используйте native files-snapshot вместе с БД, а для изображений — отдельный media-snapshot. Перенос на новый VPS и backup/restore описывают согласованный порядок.
Если нужны собственный viewer, обработка или бизнес-правила выдачи, используйте backend custom и custom admin, сохранив серверную авторизацию.