Skip to content
KajayDocs
IntegrationTypeScript SDKReact

Handle files

Choose response-embedded content or host storage and own the complete file lifecycle.

Choose storage mode

With storeDataAsText, file content travels inside the response as a data URL. With an uploader, the host stores content and the answer keeps returned file metadata and a URL.

Provide file seams

Pass storage callbacks while parsing. Core never receives a DOM File; the React adapter converts selected or dropped files into plain FileEntry values.

Upload and cleanup
import type { FileCleaner, FileUploader } from '@kajay/core';

const uploadFiles: FileUploader = async ({ questionName, files }) => {
  const response = await uploadToObjectStorage(questionName, files);
  return response.map((stored) => ({
    name: stored.name,
    type: stored.type,
    size: stored.size,
    url: stored.url,
  }));
};

const clearFiles: FileCleaner = async ({ files }) => {
  await Promise.all(files.map((file) => deleteStoredFile(file.url)));
};

const { survey } = parseSurvey(definition, { uploadFiles, clearFiles });

Own the file lifecycle

  • Kajay enforces authored count, size, and accepted-type rules and reports upload state.
  • The author chooses limits and whether response data may carry content.
  • The host scans content, authorizes access, stores and deletes objects, mints download URLs, and applies retention policy.

Handle failed uploads