Skip to content
Integration Runtime Layer

uploads

Large-file uploads — S3 / R2 multipart, Tus resumable, presigned URLs. Picks the right strategy by file size automatically.

packages/integrations/uploads · Source ↗ · Docs ↗

report-Q4-2025.pdf48.2 MB
x
62% · part 6 of 1000:14
S3multipart · resumable

In code

uploads.ts
1import { getUploadProvider } from "@nebutra/uploads";
2
3const uploads = await getUploadProvider();
4
5// Small file — presigned PUT.
6const { url, headers } = await uploads.createPresignedUpload({
7  bucket: "nebutra-uploads",
8  key: `docs/${file.name}`,
9  contentType: file.type,
10  tenantId: org.id,
11});
12
13// Large file — resumable multipart.
14const mp = await uploads.createMultipartUpload({ bucket, key }, 10);