Skip to content

Blobs (files)

import { Aside } from ‘@astrojs/starlight/components’;

Upload and serve files. Access via sdk.blobs.

upload(file, { filename?, mimeType? }): Promise<BlobInfo>
get(id): Promise<BlobInfo | null>
getDownloadUrl(id): Promise<string> // short-lived, direct from R2 — preferred
getUrl(id): string // Worker-proxied, long-lived
delete(id): Promise<boolean>
list({ limit?, offset? }): Promise<BlobListResult>
storage(): Promise<StorageInfo>
const file = document.querySelector('input[type=file]').files[0];
const blob = await sdk.blobs.upload(file);
// Large media — get a fresh signed URL each time you need it
imgEl.src = await sdk.blobs.getDownloadUrl(blob.id);
const { used, limit } = await sdk.blobs.storage();
ConstraintValue
Per file50 MB
Per artifact500 MB
Max blobs1000

Allowed: images (PNG/JPEG/GIF/WebP/SVG), video (MP4/WebM), audio (MP3/WAV/OGG), PDF, TXT, CSV, Markdown.

<script type="shareout/manifest">
{ "version": "2.0", "sources": { "blobs": ["logo.png", "document.pdf"] } }
</script>

REST equivalents: Blobs API.