file-upload

Implements the FuseBase temp-to-stored file upload lifecycle and file descriptor construction.

5|2|Updated Feb 9, 2026
One-click install
npx skills add https://github.com/ryan-haver/fusebase-mcp --skill file-upload-ryan-haver
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: file-upload
Source: https://github.com/ryan-haver/fusebase-mcp/tree/main/apps/client-portal-dashboard/.claude/skills/file-upload
Command: npx skills add https://github.com/ryan-haver/fusebase-mcp --skill file-upload-ryan-haver

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Developers building FuseBase apps often mishandle file uploads by storing binary data in SQL, misusing presigned URLs, or breaking display links, leading to failed uploads and broken attachments. ## Core Features & Use Cases - Canonical Upload Lifecycle: Documents the full tempStoredFileName -> storedFileUUID -> readUrl / relative url -> file descriptor flow, including multipart uploads for files over 50 MB. - Presigned URL Rules: Explains how to inspect X-Amz-SignedHeaders and send correct bare PUT requests to avoid CORS and header failures. - Storage Guardrails: Enforces storing only storedFileUUID and readUrl in dashboards or isolated SQL, never base64 or bytea blobs, and brokers visitor uploads through the feature backend with FBS_FEATURE_TOKEN. - Use Case: When building a client portal app where visitors upload documents, use this Skill to route the upload through the app feature backend, create the stored file, and return a display-ready URL to the client. ## Quick Start Load the file-upload skill and follow the upload lifecycle reference to upload a file and build its file descriptor for my FuseBase app.

Frequently Asked Questions about file-upload

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I upload a file to FuseBase from my app?▼

Upload files by posting multipart/form-data to the web-editor v2-upload endpoint to get a tempStoredFileName, then call bucket-files/create-relative to obtain a storedFileUUID. Pass the resulting file descriptor to downstream apps or dashboard cells.

How do I upload files larger than 50 MB to FuseBase?▼

Use the multipart flow on the same v2-upload endpoint: start with action=start to get part URLs, PUT each chunk with up to 3 retries, then finish with action=finish including parts, uploadingId, and tempStoredFileName.

Can I store file bytes as base64 in FuseBase isolated SQL?▼

No, never store base64, bytea, or data URLs in isolated SQL, even as an MVP. Ordinary SQL write paths are only reliable around 100-150 KB; persist only storedFileUUID, readUrl, and small metadata instead.

Why does my browser PUT to a presigned S3 URL fail?▼

Failures usually come from adding headers not listed in X-Amz-SignedHeaders, such as Content-Type, which triggers a CORS preflight the bucket rejects. Send a bare PUT with raw bytes and only the signed headers.

How do visitor or public-link apps upload files without files.write scope?▼

Broker the upload on the app feature backend using FBS_FEATURE_TOKEN, which has files.write permission, then return the storedFileUUID and readUrl to the client. Visitor browser tokens typically cannot call file write operations.

Why does my uploaded file URL return 404 in the app?▼

Relative stored-file URLs starting with / resolve against the wrong host when placed directly in links or image sources. Prepend https://app.thefusebase.com/box/file to relative URLs before displaying or persisting them.