Dokumentacja dla programistów›Planowanie aplikacji›Pamięć obiektowa (BLOB storage)
Dokumentacja dla programistów

Pamięć obiektowa (BLOB storage)

Planowanie aplikacjiAplikacje monday.com
Aktualizacja 2026-10-01

Pamięć obiektowa umożliwia aplikacjom monday code przechowywanie i zarządzanie dużymi, nieustrukturyzowanymi plikami, takimi jak obrazy, filmy, dokumenty i archiwa, bezpośrednio w monday.com.

Jest przeznaczona do przechowywania dużej liczby nieustrukturyzowanych plików oraz wykonywania rzadkich, intensywnych operacji odczytu i zapisu. monday code oferuje też pamięć klucz-wartość, która umożliwia szybki dostęp na podstawie klucza, oraz bazę danych dokumentów, która pozwala na zaawansowane wyszukiwanie ustrukturyzowanych lub częściowo ustrukturyzowanych danych.

Dzięki natywnej pamięci obiektowej opartej na Google Cloud Storage możesz przesyłać, pobierać i wyświetlać listę plików, usuwać je, pobierać metadane oraz generować podpisane adresy URL umożliwiające bezpośrednie przesyłanie plików z klienta. Wszystkie te funkcje są wbudowane w monday code, więc dane nie opuszczają infrastruktury monday. Zapewnia to bezpieczeństwo, prostotę i wydajność.

Pamięć obiektowa uzupełnia istniejące rozwiązania do przechowywania danych w monday code i jest przeznaczona specjalnie do przechowywania dużych, nieustrukturyzowanych plików.

Limity

Pamięć obiektowa podlega następującym limitom:

Limit Opis
Przesyłanie po stronie serwera (uploadFile) SDK nie narzuca sztywnego limitu; praktyczne ograniczenia zależą od GCS i limitów środowiska wykonawczego
Przesyłanie za pomocą podpisanego adresu URL Maksymalny rozmiar pliku: 500 MB
Ważność podpisanego adresu URL Domyślnie: 15 minut
Maksymalnie: 7 dni

Inicjowanie

Maksymalny rozmiar pliku został zwiększony z 50 MB do 500 MB w wersji @mondaycom/apps-sdk v3.3.2 i nowszych.

Zainicjuj pamięć obiektową w kodzie backendu działającym w monday code:

import { ObjectStorage } from '@mondaycom/apps-sdk';

const objectStorage = new ObjectStorage();

Uwagi

  • Wszystkie operacje są asynchroniczne i wymagają użycia await.
  • Wszystkie odpowiedzi mają format { success: boolean, ... }.

Obsługiwane metody

Przesyłanie plików

Przesyła zawartość pliku z kodu po stronie serwera. Aby przesyłać pliki po stronie klienta (w przeglądarce lub aplikacji mobilnej), użyj podpisanego adresu URL.

const objectStorage = new ObjectStorage();

// Simple upload
const result = await objectStorage.uploadFile('user-avatar.jpg', fileBuffer);

// Upload with options
const result2 = await objectStorage.uploadFile('document.pdf', fileBuffer, {
  contentType: 'application/pdf',
  metadata: {
    'uploaded-by': 'user123',
    'department': 'sales'
  }
});

Opcje

Opcja Typ Opis Wymagane
contentType String Typ MIME pliku. Domyślnie application/octet-stream. Nie
metadata Object Niestandardowe pary klucz-wartość do oznaczania i organizacji. Nie

Odpowiedź

Sukces

json { "success": true, "fileName": "user-avatar.jpg", "fileUrl": "gs://bucket/user-avatar.jpg" }

Niepowodzenie

json { "success": false, "error": "error message" }

Pobieranie plików

Pobiera zawartość pliku i jego typ MIME.

const result = await objectStorage.downloadFile('user-avatar.jpg');

if (result.success) {
  const fileContent = result.content; // Buffer
  const mimeType = result.contentType; // e.g. 'image/jpeg'
}

Odpowiedź

Sukces

Zwraca content (Buffer) i contentType.

Niepowodzenie

Zwraca komunikat o błędzie, na przykład File not found.

Usuwanie plików

Trwale usuwa plik z pamięci.

const result = await objectStorage.deleteFile('old-document.pdf');

Odpowiedź

Sukces

json { "success": true }

Niepowodzenie

json { "success": false, "error": "error message" }

Wyświetlanie listy plików

Wyświetla listę plików wraz z metadanymi. Obsługuje opcjonalne filtrowanie według prefiksu i stronicowanie.

// List all files (default: 100 files per page)
const result = await objectStorage.listFiles();

// Filter by prefix (logical folder)
const result2 = await objectStorage.listFiles({
  prefix: 'users/123/'
});

// Pagination
const result3 = await objectStorage.listFiles({
  maxResults: 50,
  pageToken: 'next-page-token-from-previous-response'
});

Opcje

Opcja Typ Opis Wymagane
prefix String Filtruje wyniki według prefiksu ścieżki (folderu). Nie
maxResults Number Liczba elementów na stronie. Domyślnie 100. Nie
pageToken String Token używany do pobrania kolejnej strony wyników. Nie

Odpowiedź

Zwraca:

  • Tablicę obiektów z informacjami o plikach: name, size, contentType, lastModified, etag i metadata
  • nextPageToken, jeśli dostępne są kolejne wyniki

Pobieranie informacji o pliku

Pobiera metadane pliku bez pobierania jego zawartości.

const result = await objectStorage.getFileInfo('report.pdf');

if (result.success) {
  console.log(result.fileInfo.size); // File size in bytes
  console.log(result.fileInfo.lastModified); // Date object
  console.log(result.fileInfo.metadata); // Custom metadata
}

Odpowiedź

Sukces

Zwraca obiekt fileInfo.

Niepowodzenie

Zwraca { success: false, error: '...' }.

Generowanie podpisanych adresów URL do przesyłania plików

Tworzy tymczasowe adresy URL, które umożliwiają klientom (w przeglądarce lub aplikacji mobilnej) przesłanie określonego pliku bezpośrednio do pamięci w chmurze, bez przekierowywania żądania przez backend. Podpisany adres URL to tymczasowy, bezpieczny link wygenerowany i autoryzowany przez monday code, który przyznaje ograniczone uprawnienia do przesłania danego pliku.

Pamiętaj, że:

  • Każda osoba mająca podpisany adres URL może przesyłać pliki do czasu jego wygaśnięcia
  • Po wygaśnięciu adres URL przestaje działać
  • Zalecamy tę metodę w przypadku dużych plików i przesyłania ich za pomocą przeglądarki
// Basic usage (15-minute expiration, 50 MB limit)

const result = await objectStorage.getPresignedUploadUrl('user-upload.jpg');

// With custom options
const result2 = await objectStorage.getPresignedUploadUrl('video.mp4', {
  expires: new Date(Date.now() + 60 * 60 * 1000), // 1 hour
  contentType: 'video/mp4',
  maxFileSizeBytes: 50 * 1024 * 1024 // 50 MB
});

const uploadUrl = result.presignedUrl;

Opcje

Opcja Typ Opis Wymagane
expires Date Czas wygaśnięcia adresu URL. Domyślnie 15 minut od utworzenia. Nie
contentType String Ogranicza przesyłanie do określonego typu MIME. Nie
maxFileSizeBytes Number Maksymalny dozwolony rozmiar pliku. Nie

Błędy

Wszystkie operacje zwracają szczegółowe komunikaty o błędach, między innymi:

  • File not found
  • Failed to upload file: [reason]
  • Failed to download file: [reason]
  • Failed to list files: [reason]
  • Failed to generate presigned upload URL: [reason]

Chcesz skalować swoją aplikację? Złóż tutaj.