Storage Adapters

Configure S3-compatible, R2, or filesystem storage.

S3-compatible adapter

import { createS3CompatibleStorageAdapter } from "@fragno-dev/upload";

const storage = createS3CompatibleStorageAdapter({
  bucket: process.env.UPLOAD_S3_BUCKET!,
  endpoint: process.env.UPLOAD_S3_ENDPOINT!,
  signer,
});

The signer is responsible for SigV4 signing and presigning. This works with AWS S3 and compatible providers such as Cloudflare R2.

R2 adapter

import { createR2StorageAdapter } from "@fragno-dev/upload";

const storage = createR2StorageAdapter({
  bucket: process.env.R2_BUCKET!,
  endpoint: process.env.R2_ENDPOINT!,
  signer,
});

The R2 adapter only applies R2-specific defaults; it still relies on the S3-compatible signer.

Filesystem adapter (Node)

import { createFilesystemStorageAdapter } from "@fragno-dev/upload";

const storage = createFilesystemStorageAdapter({
  rootDir: "./uploads",
});

Filesystem storage is server-streamed (proxy-only) and intended for local development or small deployments.