1.5 KiB
1.5 KiB
| name | description |
|---|---|
| r2-upload | Upload files to Cloudflare R2 via S3-compatible API. Standalone skill and importable package. |
R2 Upload
Upload files to Cloudflare R2. Works as a CLI skill and as an importable package for other skills.
CLI Usage
bun run upload -- --file=/tmp/report.pdf --key=reports/2024/report.pdf
bun run upload -- --file=/tmp/data.json
bun run upload -- --file=/tmp/image.png --content-type=image/png --dry-run
As Package Dependency
Other skills can import this package:
{ "dependencies": { "@clawd/r2-upload": "file:../r2-upload" } }
import { loadR2Config, uploadToR2, uploadFile } from "@clawd/r2-upload";
const config = loadR2Config();
const url = await uploadToR2(config, "my/key.txt", "content", "text/plain");
const result = await uploadFile(config, "/tmp/file.pdf", "docs/file.pdf");
Config
All R2 config is loaded from .env.local:
CLOUDFLARE_ACCESS_KEY_ID=xxx
CLOUDFLARE_SECRET_ACCESS_KEY=xxx
CLOUDFLARE_ENDPOINT=https://xxx.r2.cloudflarestorage.com
CLOUDFLARE_BUCKET_NAME=common-static
CLOUDFLARE_PUBLIC_URL=https://static.example.com
CLI Flags
--file(required) local file path to upload--keyR2 object key (default:uploads/<timestamp>/<filename>)--content-typeMIME type (default: auto-detected from extension)--dry-runvalidate without uploading
Output
{
"status": "success",
"key": "reports/2024/report.pdf",
"url": "https://static.example.com/reports/2024/report.pdf",
"size": 12345,
"contentType": "application/pdf"
}