mcpField
R
r2-upload

r2-upload

github.com/zebbern云与 DevOps4.7k39 次安装1 天前更新
代码仓库

关于 r2-upload

r2-upload 是用于文件上传的命令行工具,可将文件存入 Cloudflare R2 或其他 S3 兼容存储,并生成带有效期的下载链接。它还支持多桶配置及列出、删除文件。

主要功能

  1. 01上传文件至 R2 或 S3 兼容存储
  2. 02生成可配置有效期的预签名链接
  3. 03配置多个存储桶
  4. 04自动检测内容类型
  5. 05列出近期上传并删除文件

适用场景

  1. 01向存储桶上传文件并分享临时下载链接
  2. 02为不同用途选择已配置的存储桶
  3. 03设置自定义对象路径或公开链接
  4. 04查看近期上传并清理文件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zebbern/claude-code-guide --skill r2-upload

安装后在 Claude Code 中输入/r2-upload确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

_meta.json
CLAWDHUB.md
example-config.yml
package.json
pnpm-lock.yaml
README.md
SECURITY.md
tsconfig.json
src/
index.ts
onboard.ts

详细介绍

Send Me My Files - 使用短时效签名 URL 上传到 R2

将文件上传到 Cloudflare R2 或任何兼容 S3 的存储,并生成预签名下载链接。

功能

  • 将文件上传到 R2/S3 存储桶
  • 生成预签名下载 URL(可配置有效期)
  • 支持任何兼容 S3 的存储(R2、AWS S3、MinIO 等)
  • 支持配置多个存储桶
  • 自动检测内容类型

配置

创建 ~/.r2-upload.yml(或设置 R2_UPLOAD_CONFIG 环境变量):

# Default bucket (used when no bucket specified)
default: my-bucket

# Bucket configurations
buckets:
  my-bucket:
    endpoint: https://abc123.r2.cloudflarestorage.com
    access_key_id: your_access_key
    secret_access_key: your_secret_key
    bucket_name: my-bucket
    public_url: https://files.example.com  # Optional: custom domain
    region: auto  # For R2, use "auto"

  # Additional buckets
  personal:
    endpoint: https://xyz789.r2.cloudflarestorage.com
    access_key_id: ...
    secret_access_key: ...
    bucket_name: personal-files
    region: auto
Cloudflare R2 设置
  1. 前往 Cloudflare 控制面板 → R2
  2. 创建存储桶
  3. 前往 R2 API 令牌:https://dash.cloudflare.com/<ACCOUNT_ID>/r2/api-tokens
  4. 创建新的 API 令牌
    • 重要: 将令牌应用到特定存储桶(选择你的存储桶)
    • 权限:对象读写
  5. 复制 Access Key ID 和 Secret Access Key
  6. 使用此端点格式:https://<account_id>.r2.cloudflarestorage.com
  7. 设置 region: auto
AWS S3 设置
aws-bucket:
  endpoint: https://s3.us-east-1.amazonaws.com
  access_key_id: ...
  secret_access_key: ...
  bucket_name: my-aws-bucket
  region: us-east-1

用法

上传文件
r2-upload /path/to/file.pdf
# Returns: https://files.example.com/abc123/file.pdf?signature=...
使用自定义路径上传
r2-upload /path/to/file.pdf --key uploads/2026/file.pdf
上传到指定存储桶
r2-upload /path/to/file.pdf --bucket personal
自定义有效期(默认:5 分钟)
r2-upload /path/to/file.pdf --expires 24h
r2-upload /path/to/file.pdf --expires 1d
r2-upload /path/to/file.pdf --expires 300  # seconds
公共 URL(无签名)
r2-upload /path/to/file.pdf --public

工具

  • r2_upload - 上传文件并获取预签名 URL
  • r2_list - 列出近期上传的文件
  • r2_delete - 删除文件

环境变量

  • R2_UPLOAD_CONFIG - 配置文件路径(默认:~/.r2-upload.yml)
  • R2_DEFAULT_BUCKET - 覆盖默认存储桶
  • R2_DEFAULT_EXPIRES - 默认有效期,单位为秒(默认:300 = 5 分钟)

注意事项

  • 上传的文件会保留原始文件名,除非指定 --key
  • 自动添加 UUID 前缀以避免冲突(例如:abc123/file.pdf)
  • 根据文件扩展名自动检测内容类型
  • 预签名 URL 会在配置的有效期后过期

评论

支持 Markdown