Dashboard

File Uploads

Accept file attachments in your forms with secure cloud storage.

File uploads require Pro or higher.

Supported file types

The following file type categories are available in the form builder:

Images

  • JPEG (.jpg, .jpeg)
  • PNG (.png)
  • GIF (.gif)
  • WebP (.webp)
  • SVG (.svg)

Documents

  • PDF (.pdf)
  • Word (.doc, .docx)

Spreadsheets

  • Excel (.xls, .xlsx)
  • CSV (.csv)

Presentations

  • PowerPoint (.ppt, .pptx)

Archives

  • ZIP (.zip)
  • RAR (.rar)
  • 7-Zip (.7z)

Media

  • Audio (MP3, WAV, OGG)
  • Video (MP4, WebM, MOV)

File size limits

PlanMax file size
FreeNot available
Pro10 MB per file
Business25 MB per file

Form Builder Configuration

When adding a File Upload block in the form builder, you can configure the following settings:

1

Basic Settings

Max files

Control how many files respondents can upload per question. Options: 1, 2, 3, 5, 10, or 20 files.

Max file size

Set the maximum size for each uploaded file. Options: 1 MB, 2 MB, 5 MB, 10 MB, 25 MB, 50 MB, or 100 MB. Note: Actual limits may be restricted by your plan.

2

Advanced Settings

Allowed file types

Select which file type categories to accept. Toggle categories on/off:

  • Images (JPG, PNG, GIF, WebP, SVG)
  • Documents (PDF, DOC, DOCX)
  • Spreadsheets (XLS, XLSX, CSV)
  • Presentations (PPT, PPTX)
  • Archives (ZIP, RAR, 7Z)
  • Audio (MP3, WAV, OGG)
  • Video (MP4, WebM, MOV)

Custom file types

Add custom MIME types or file extensions beyond the predefined categories. Enter comma-separated values like .sketch, .fig, application/json.

Upload API

Files are uploaded via multipart form data:

Bash
POST /api/forms/{formId}/upload
Content-Type: multipart/form-data

file: (binary)
questionId: "file_upload_field_id"

Response:

JSON
{
  "success": true,
  "upload": {
    "id": "upload_abc123",
    "filename": "document.pdf",
    "size": 1048576,
    "type": "application/pdf"
  }
}

Accessing uploaded files

Uploaded files are stored securely and accessible only to form owners:

Bash
GET /api/forms/{formId}/upload?uploadId={uploadId}

Returns a signed URL valid for 1 hour:

JSON
{
  "url": "https://storage.favform.com/...",
  "filename": "document.pdf",
  "type": "application/pdf",
  "size": 1048576
}

FileUploadSettings schema

The file upload configuration is stored in the question's fileUploadSettings object:

TypeScript
interface FileUploadSettings {
  maxFiles?: number;      // Max files allowed (default: 1)
  maxSizeMB?: number;     // Max size per file in MB (default: 10)
  allowedTypes?: string[]; // MIME types or extensions
}

// Example configuration
{
  "fileUploadSettings": {
    "maxFiles": 5,
    "maxSizeMB": 25,
    "allowedTypes": [
      "image/*",
      "application/pdf",
      ".sketch"
    ]
  }
}

Storage and security

  • Files are stored in encrypted cloud storage
  • Access requires authentication as the form owner
  • Signed URLs expire after 1 hour
  • Files are automatically deleted when responses are deleted
  • Data retention policies apply to file uploads
  • File type validation occurs both client-side and server-side