Cloudflare R2
Upload and manage files in Cloudflare R2 storage buckets.
Prerequisites
wranglerCLI:npm install -g wrangler- R2 config at
~/.config/cloudflare/r2.json
Config Format
{
"bucket": "your-bucket-name",
"accountId": "your-account-id",
"publicDomain": "pub-xxx.r2.dev",
"apiToken": "your-api-token"
}
Quick Upload
Single file:
scripts/r2-upload.sh <local-file> [remote-path]
Batch upload:
scripts/r2-upload.sh <directory> <remote-prefix>
Manual Commands
# Set credentials
export CLOUDFLARE_ACCOUNT_ID="$(jq -r .accountId ~/.config/cloudflare/r2.json)"
export CLOUDFLARE_API_TOKEN="$(jq -r .apiToken ~/.config/cloudflare/r2.json)"
BUCKET=$(jq -r .bucket ~/.config/cloudflare/r2.json)
# Upload
wrangler r2 object put "$BUCKET/path/to/file.png" --file local.png --remote
# List objects
wrangler r2 object list $BUCKET --prefix "path/" --remote
# Delete
wrangler r2 object delete "$BUCKET/path/to/file.png" --remote
Public URL
After upload, files are accessible at:
https://<publicDomain>/<remote-path>
Example: https://pub-xxx.r2.dev/article/image.png