Twórz pola plików, aby dołączać dokumenty, obrazy i inne pliki do rekordów
Pola niestandardowe plików pozwalają na dołączanie wielu plików do rekordów. Pliki są przechowywane w bezpieczny sposób w AWS S3 z kompleksowym śledzeniem metadanych, walidacją typu pliku i odpowiednimi kontrolami dostępu.
Podstawowy przykład
Utwórz proste pole pliku:
mutation CreateFileField {
createCustomField(input: {
name: "Attachments"
type: FILE
}) {
id
name
type
}
}
Zaawansowany przykład
Utwórz pole pliku z opisem:
mutation CreateDetailedFileField {
createCustomField(input: {
name: "Project Documents"
type: FILE
description: "Upload project-related documents, images, and files"
}) {
id
name
type
description
}
}
Parametry wejściowe
CreateCustomFieldInput
| Parametr | Typ | Wymagane | Opis |
|---|---|---|---|
name |
String! | ✅ Tak | Nazwa wyświetlana pola pliku |
type |
CustomFieldType! | ✅ Tak | Musi być FILE |
description |
String | Nie | Tekst pomocy wyświetlany użytkownikom |
Uwaga: Pola niestandardowe są automatycznie powiązane z projektem na podstawie aktualnego kontekstu projektu użytkownika. Żaden parametr projectId nie jest wymagany.
Proces przesyłania plików
Krok 1: Prześlij plik
Najpierw prześlij plik, aby uzyskać UID pliku:
mutation UploadFile {
uploadFile(input: {
file: $file # File upload variable
companyId: "company_123"
projectId: "proj_123"
}) {
id
uid
name
size
type
extension
status
}
}
Krok 2: Dołącz plik do rekordu
Następnie dołącz przesłany plik do rekordu:
mutation AttachFileToRecord {
createTodoCustomFieldFile(input: {
todoId: "todo_123"
customFieldId: "file_field_456"
fileUid: "file_uid_from_upload"
}) {
id
file {
uid
name
size
type
}
}
}
Zarządzanie załącznikami plików
Dodawanie pojedynczych plików
mutation AddFileToField {
createTodoCustomFieldFile(input: {
todoId: "todo_123"
customFieldId: "field_456"
fileUid: "file_uid_789"
}) {
id
position
file {
uid
name
size
type
extension
}
}
}
Usuwanie plików
mutation RemoveFileFromField {
deleteTodoCustomFieldFile(input: {
todoId: "todo_123"
customFieldId: "field_456"
fileUid: "file_uid_789"
})
}
Operacje zbiorowe na plikach
Zaktualizuj wiele plików jednocześnie, używając customFieldOptionIds:
mutation SetMultipleFiles {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
customFieldOptionIds: ["file_uid_1", "file_uid_2", "file_uid_3"]
})
}
Parametry wejściowe przesyłania plików
UploadFileInput
| Parametr | Typ | Wymagane | Opis |
|---|---|---|---|
file |
Upload! | ✅ Tak | Plik do przesłania |
companyId |
String! | ✅ Tak | ID firmy do przechowywania plików |
projectId |
String | Nie | ID projektu dla plików specyficznych dla projektu |
Parametry wejściowe zarządzania plikami
| Parametr | Typ | Wymagane | Opis |
|---|---|---|---|
todoId |
String! | ✅ Tak | ID rekordu |
customFieldId |
String! | ✅ Tak | ID pola niestandardowego pliku |
fileUid |
String! | ✅ Tak | Unikalny identyfikator przesłanego pliku |
Przechowywanie plików i limity
Limity rozmiaru plików
| Typ limitu | Rozmiar |
|---|---|
| Maximum file size | 256MB per file |
| Batch upload limit | 10 files max, 1GB total |
| GraphQL upload limit | 256MB |
Obsługiwane typy plików
Obrazy
jpg,jpeg,png,gif,bmp,webp,svg,ico,tiff,tif
Filmy
mp4,avi,mov,wmv,flv,webm,mkv,3gp
Audio
mp3,wav,flac,aac,ogg,wma
Dokumenty
pdf,doc,docx,xls,xlsx,ppt,pptx,txt,rtf
Archiwa
zip,rar,7z,tar,gz
Kod/Tekst
json,xml,csv,md,yaml,yml
Architektura przechowywania
- Przechowywanie: AWS S3 z zorganizowaną strukturą folderów
- Format ścieżki:
companies/{companySlug}/projects/{projectSlug}/uploads/{year}/{month}/{username}/{fileUid}_{filename} - Bezpieczeństwo: Podpisane URL-e dla bezpiecznego dostępu
- Kopia zapasowa: Automatyczna redundancja S3
Pola odpowiedzi
Odpowiedź pliku
| Pole | Typ | Opis |
|---|---|---|
id |
ID! | ID bazy danych |
uid |
String! | Unikalny identyfikator pliku |
name |
String! | Oryginalna nazwa pliku |
size |
Float! | Rozmiar pliku w bajtach |
type |
String! | Typ MIME |
extension |
String! | Rozszerzenie pliku |
status |
FileStatus | OCZEKUJĄCE lub POTWIERDZONE (nullable) |
shared |
Boolean! | Czy plik jest udostępniony |
createdAt |
DateTime! | Znacznik czasu przesłania |
Odpowiedź TodoCustomFieldFile
| Pole | Typ | Opis |
|---|---|---|
id |
ID! | ID rekordu połączeniowego |
uid |
String! | Unikalny identyfikator |
position |
Float! | Kolejność wyświetlania |
file |
File! | Powiązany obiekt pliku |
todoCustomField |
TodoCustomField! | Rodzicielskie pole niestandardowe |
createdAt |
DateTime! | Kiedy plik został dołączony |
Tworzenie rekordów z plikami
Podczas tworzenia rekordów możesz dołączać pliki, używając ich 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
}
}
}
}
}
Walidacja plików i bezpieczeństwo
Walidacja przesyłania
- Sprawdzanie typu MIME: Walidacja w stosunku do dozwolonych typów
- Walidacja rozszerzenia pliku: Zapas dla
application/octet-stream - Limity rozmiaru: Egzekwowane w czasie przesyłania
- Sanityzacja nazwy pliku: Usuwa znaki specjalne
Kontrola dostępu
- Uprawnienia do przesyłania: Wymagana przynależność do projektu/firma
- Powiązanie pliku: Role ADMIN, WŁAŚCICIEL, CZŁONEK, KLIENT
- Dostęp do pliku: Dziedziczone z uprawnień projektu/firma
- Bezpieczne URL-e: Podpisane URL-e z ograniczonym czasem dostępu do pliku
Wymagane uprawnienia
| Akcja | Wymagane uprawnienie |
|---|---|
| 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 |
Odpowiedzi błędów
Plik za duży
{
"errors": [{
"message": "File \"filename.pdf\": Size exceeds maximum limit of 256MB",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Plik nie znaleziony
{
"errors": [{
"message": "File not found",
"extensions": {
"code": "FILE_NOT_FOUND"
}
}]
}
Pole nie znalezione
{
"errors": [{
"message": "Custom field not found",
"extensions": {
"code": "CUSTOM_FIELD_NOT_FOUND"
}
}]
}
Najlepsze praktyki
Zarządzanie plikami
- Przesyłaj pliki przed dołączeniem do rekordów
- Używaj opisowych nazw plików
- Organizuj pliki według projektu/celu
- Okresowo sprzątaj nieużywane pliki
Wydajność
- Przesyłaj pliki w partiach, gdy to możliwe
- Używaj odpowiednich formatów plików dla typu treści
- Kompresuj duże pliki przed przesłaniem
- Rozważ wymagania dotyczące podglądu plików
Bezpieczeństwo
- Waliduj zawartość plików, a nie tylko rozszerzenia
- Używaj skanowania wirusów dla przesyłanych plików
- Wdrażaj odpowiednie kontrole dostępu
- Monitoruj wzorce przesyłania plików
Typowe przypadki użycia
-
Zarządzanie dokumentami
- Specyfikacje projektów
- Umowy i kontrakty
- Notatki i prezentacje ze spotkań
- Dokumentacja techniczna
-
Zarządzanie zasobami
- Pliki projektowe i makiety
- Zasoby marki i logotypy
- Materiały marketingowe
- Obrazy produktów
-
Zgodność i rejestry
- Dokumenty prawne
- Ślady audytowe
- Certyfikaty i licencje
- Rejestry finansowe
-
Współpraca
- Wspólne zasoby
- Dokumenty z kontrolą wersji
- Opinie i adnotacje
- Materiały referencyjne
Funkcje integracji
Z automatyzacjami
- Wyzwalaj akcje, gdy pliki są dodawane/usuwane
- Przetwarzaj pliki na podstawie typu lub metadanych
- Wysyłaj powiadomienia o zmianach w plikach
- Archiwizuj pliki na podstawie warunków
Z obrazami okładkowymi
- Używaj pól plików jako źródeł obrazów okładkowych
- Automatyczne przetwarzanie obrazów i miniatur
- Dynamiczne aktualizacje okładek, gdy pliki się zmieniają
Z wyszukiwaniami
- Odwołuj się do plików z innych rekordów
- Agreguj liczby i rozmiary plików
- Znajduj rekordy według metadanych plików
- Krzyżowo odwołuj się do załączników plików
Ograniczenia
- Maksymalnie 256MB na plik
- Zależne od dostępności S3
- Brak wbudowanego wersjonowania plików
- Brak automatycznej konwersji plików
- Ograniczone możliwości podglądu plików
- Brak edytowania w czasie rzeczywistym
Powiązane zasoby
- API przesyłania plików - Punkty końcowe przesyłania plików
- Przegląd pól niestandardowych - Ogólne koncepcje
- API automatyzacji - Automatyzacje oparte na plikach
- Dokumentacja AWS S3 - Zaplecze przechowywania