Создайте поля для файлов, чтобы прикрепить документы, изображения и другие файлы к записям


Пользовательские поля файлов позволяют вам прикреплять несколько файлов к записям. Файлы хранятся безопасно в AWS S3 с полным отслеживанием метаданных, проверкой типа файла и соответствующими контролями доступа.

Простой пример

Создайте простое поле файла:

mutation CreateFileField {
  createCustomField(input: {
    name: "Attachments"
    type: FILE
  }) {
    id
    name
    type
  }
}

Расширенный пример

Создайте поле файла с описанием:

mutation CreateDetailedFileField {
  createCustomField(input: {
    name: "Project Documents"
    type: FILE
    description: "Upload project-related documents, images, and files"
  }) {
    id
    name
    type
    description
  }
}

Входные параметры

CreateCustomFieldInput

Параметр Тип Обязательный Описание
name String! ✅ Да Отображаемое имя поля файла
type CustomFieldType! ✅ Да Должно быть FILE
description String Нет Текст помощи, отображаемый пользователям

Примечание: Пользовательские поля автоматически ассоциируются с проектом на основе текущего контекста проекта пользователя. Параметр projectId не требуется.

Процесс загрузки файлов

Шаг 1: Загрузить файл

Сначала загрузите файл, чтобы получить UID файла:

mutation UploadFile {
  uploadFile(input: {
    file: $file  # File upload variable
    companyId: "company_123"
    projectId: "proj_123"
  }) {
    id
    uid
    name
    size
    type
    extension
    status
  }
}

Шаг 2: Присоединить файл к записи

Затем прикрепите загруженный файл к записи:

mutation AttachFileToRecord {
  createTodoCustomFieldFile(input: {
    todoId: "todo_123"
    customFieldId: "file_field_456"
    fileUid: "file_uid_from_upload"
  }) {
    id
    file {
      uid
      name
      size
      type
    }
  }
}

Управление вложениями файлов

Добавление одиночных файлов

mutation AddFileToField {
  createTodoCustomFieldFile(input: {
    todoId: "todo_123"
    customFieldId: "field_456"
    fileUid: "file_uid_789"
  }) {
    id
    position
    file {
      uid
      name
      size
      type
      extension
    }
  }
}

Удаление файлов

mutation RemoveFileFromField {
  deleteTodoCustomFieldFile(input: {
    todoId: "todo_123"
    customFieldId: "field_456"
    fileUid: "file_uid_789"
  })
}

Пакетные операции с файлами

Обновите несколько файлов одновременно, используя customFieldOptionIds:

mutation SetMultipleFiles {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_456"
    customFieldOptionIds: ["file_uid_1", "file_uid_2", "file_uid_3"]
  })
}

Входные параметры загрузки файла

UploadFileInput

Параметр Тип Обязательный Описание
file Upload! ✅ Да Файл для загрузки
companyId String! ✅ Да Идентификатор компании для хранения файла
projectId String Нет Идентификатор проекта для файлов, специфичных для проекта

Входные параметры управления файлами

Параметр Тип Обязательный Описание
todoId String! ✅ Да Идентификатор записи
customFieldId String! ✅ Да Идентификатор пользовательского поля файла
fileUid String! ✅ Да Уникальный идентификатор загруженного файла

Хранение файлов и ограничения

Ограничения по размеру файла

Тип ограничения Размер
Maximum file size 256MB per file
Batch upload limit 10 files max, 1GB total
GraphQL upload limit 256MB

Поддерживаемые типы файлов

Изображения

  • jpg, jpeg, png, gif, bmp, webp, svg, ico, tiff, tif

Видео

  • mp4, avi, mov, wmv, flv, webm, mkv, 3gp

Аудио

  • mp3, wav, flac, aac, ogg, wma

Документы

  • pdf, doc, docx, xls, xlsx, ppt, pptx, txt, rtf

Архивы

  • zip, rar, 7z, tar, gz

Код/Текст

  • json, xml, csv, md, yaml, yml

Архитектура хранения

  • Хранение: AWS S3 с организованной структурой папок
  • Формат пути: companies/{companySlug}/projects/{projectSlug}/uploads/{year}/{month}/{username}/{fileUid}_{filename}
  • Безопасность: Подписанные URL для безопасного доступа
  • Резервное копирование: Автоматическая избыточность S3

Поля ответа

Ответ файла

Поле Тип Описание
id ID! Идентификатор базы данных
uid String! Уникальный идентификатор файла
name String! Исходное имя файла
size Float! Размер файла в байтах
type String! MIME тип
extension String! Расширение файла
status FileStatus В ОЖИДАНИИ или ПОДТВЕРЖДЕНО (может быть null)
shared Boolean! Является ли файл общим
createdAt DateTime! Время загрузки

Ответ TodoCustomFieldFile

Поле Тип Описание
id ID! Идентификатор соединительной записи
uid String! Уникальный идентификатор
position Float! Порядок отображения
file File! Связанный объект файла
todoCustomField TodoCustomField! Родительское пользовательское поле
createdAt DateTime! Когда файл был прикреплен

Создание записей с файлами

При создании записей вы можете прикреплять файлы, используя их UID:

mutation CreateRecordWithFiles {
  createTodo(input: {
    title: "Project deliverables"
    todoListId: "list_123"
    customFields: [{
      customFieldId: "file_field_id"
      customFieldOptionIds: ["file_uid_1", "file_uid_2"]
    }]
  }) {
    id
    title
    customFields {
      id
      customField {
        name
        type
      }
      todoCustomFieldFiles {
        id
        position
        file {
          uid
          name
          size
          type
        }
      }
    }
  }
}

Проверка файлов и безопасность

Проверка загрузки

  • Проверка MIME типа: Проверяет разрешенные типы
  • Проверка расширения файла: Резервный вариант для application/octet-stream
  • Ограничения по размеру: Применяются во время загрузки
  • Санитация имени файла: Удаляет специальные символы

Контроль доступа

  • Разрешения на загрузку: Требуется членство в проекте/компании
  • Ассоциация файла: Роли ADMIN, OWNER, MEMBER, CLIENT
  • Доступ к файлу: Унаследован от разрешений проекта/компании
  • Безопасные URL: Подписанные URL с ограниченным временем доступа к файлу

Необходимые разрешения

Действие Необходимое разрешение
Create file field OWNER or ADMIN project-level role
Update file field OWNER or ADMIN project-level role
Upload files Project or company membership
Attach files ADMIN, OWNER, MEMBER, or CLIENT role
View files Standard record view permissions
Delete files Same as attach permissions

Ответы на ошибки

Файл слишком большой

{
  "errors": [{
    "message": "File \"filename.pdf\": Size exceeds maximum limit of 256MB",
    "extensions": {
      "code": "BAD_USER_INPUT"
    }
  }]
}

Файл не найден

{
  "errors": [{
    "message": "File not found",
    "extensions": {
      "code": "FILE_NOT_FOUND"
    }
  }]
}

Поле не найдено

{
  "errors": [{
    "message": "Custom field not found",
    "extensions": {
      "code": "CUSTOM_FIELD_NOT_FOUND"
    }
  }]
}

Рекомендации по лучшим практикам

Управление файлами

  • Загружайте файлы перед прикреплением к записям
  • Используйте описательные имена файлов
  • Организуйте файлы по проектам/целям
  • Периодически очищайте неиспользуемые файлы

Производительность

  • Загружайте файлы партиями, когда это возможно
  • Используйте подходящие форматы файлов для типа контента
  • Сжимайте большие файлы перед загрузкой
  • Учитывайте требования к предварительному просмотру файлов

Безопасность

  • Проверяйте содержимое файлов, а не только расширения
  • Используйте антивирусное сканирование для загруженных файлов
  • Реализуйте надлежащие контроли доступа
  • Мониторьте шаблоны загрузки файлов

Общие случаи использования

  1. Управление документами

    • Спецификации проекта
    • Контракты и соглашения
    • Записи встреч и презентации
    • Техническая документация
  2. Управление активами

    • Дизайнерские файлы и макеты
    • Брендовые активы и логотипы
    • Маркетинговые материалы
    • Изображения продуктов
  3. Соответствие и записи

    • Юридические документы
    • Аудиторские следы
    • Сертификаты и лицензии
    • Финансовые записи
  4. Сотрудничество

    • Общие ресурсы
    • Документы с контролем версий
    • Обратная связь и аннотации
    • Справочные материалы

Интеграционные функции

С автоматизацией

  • Запускайте действия, когда файлы добавляются/удаляются
  • Обрабатывайте файлы на основе типа или метаданных
  • Отправляйте уведомления о изменениях файлов
  • Архивируйте файлы на основе условий

С обложками изображений

  • Используйте поля файлов в качестве источников обложек
  • Автоматическая обработка изображений и миниатюр
  • Динамическое обновление обложек при изменении файлов

С поиском

  • Ссылайтесь на файлы из других записей
  • Суммируйте количество и размеры файлов
  • Находите записи по метаданным файлов
  • Перекрестная ссылка на вложения файлов

Ограничения

  • Максимум 256 МБ на файл
  • Зависит от доступности S3
  • Нет встроенного версионирования файлов
  • Нет автоматической конвертации файлов
  • Ограниченные возможности предварительного просмотра файлов
  • Нет совместного редактирования в реальном времени

Связанные ресурсы

AI Ассистент

Ответы генерируются с использованием ИИ и могут содержать ошибки.

Как я могу вам помочь?

Спросите меня о чем угодно, связанном с Blue или этой документацией.

Введите для отправки • Shift+Enter для новой строки • ⌘I для открытия