SuperAPI AI 工具集

cloudflare-r2

部署与运维

查看项目

更新于 10-15 12:47

技能介绍

用途

Cloudflare R2 是 Cloudflare 提供的对象存储服务,兼容 S3 接口,运行在 Cloudflare 边缘网络上。本技能文档用于指导开发者在 Cloudflare Workers 中集成和使用 R2 对象存储,完成文件的上传、下载、管理以及为客户端提供直传能力。

主要能力

文档覆盖了 R2 在 Workers 环境下的核心操作:

  • 存储桶管理:通过 Wrangler CLI 或 Cloudflare Dashboard 创建存储桶,并说明了存储桶命名规则(3-63 字符,仅小写字母、数字和连字符,须以字母或数字开头结尾,账户内全局唯一)。
  • 绑定配置:在 wrangler.jsonc 中通过 r2_buckets 配置绑定,区分 binding(代码中访问名,如 env.MY_BUCKET)、bucket_name(实际桶名)和可选的 preview_bucket_name(开发环境独立桶)。
  • 对象操作 API:
    • put():上传对象,支持字符串、ArrayBuffer、ReadableStream、Blob 等类型,可设置 httpMetadata(contentType、cacheControl 等)和 customMetadata,支持条件上传(onlyIf)和校验和(md5)。
    • get():下载对象,支持以 text/json/arrayBuffer/blob 格式读取,支持 Range 范围请求和条件下载(etagMatches)。
    • head():仅获取对象元数据,用于检查文件是否存在、获取大小和修改时间。
    • delete():删除单个或批量删除(最多 1000 个 key),操作幂等。
    • list():列出对象,支持分页(cursor/limit)、前缀过滤(prefix)和分隔符(delimiter)实现类文件夹列表。
  • 分片上传(Multipart Upload):适用于大于 100MB 的文件或需要断点续传的场景,包含 createMultipartUpload、resumeMultipartUpload、uploadPart、complete、abort 的完整流程和示例代码。
  • 预签名 URL(Presigned URLs):使用 aws4fetch 生成带签名的临时 URL,允许客户端直接上传/下载 R2 对象,无需经过 Worker,节省带宽并绕过 Worker 请求大小限制。

使用方式

文档以 5 分钟快速开始为引导:先创建存储桶,再配置 wrangler.jsonc 绑定,然后编写 Worker 代码实现上传下载接口,最后通过 wrangler deploy 部署并用 curl 测试。文档提供了基于 Hono 框架和原生 Worker 两种写法的完整代码示例,并给出了类型定义方式(在 env.d.ts 中声明 R2Bucket)。

适用场景

  • 在 Worker 中处理文件上传与下载
  • 为私有对象生成带过期时间的临时访问链接
  • 让浏览器或客户端直接上传到 R2,避免经过 Worker
  • 大文件的分片与断点续传上传
  • 按目录前缀组织和管理对象

限制与注意事项

  • 分片上传不适用于小于 5MB 的文件(开销不划算),也不建议在 Worker 内部使用(应直接用 put())。
  • 预签名 URL 仅适用于 R2 端点,不适用于自定义域名。
  • 预签名 URL 不适合需要对上传进行校验或处理的场景,也不适用于已公开的文件。
  • 文档标注依赖 cloudflare-worker-base(用于 Worker 设置),涉及版本为 wrangler@4.43.0、@cloudflare/workers-types@4.20251014.0、aws4fetch@1.0.20。
  • 文档中关于 CORS 配置的具体内容在提供的资料中未完整展开,暂未提供详细说明。
  • 关于收费、价格、平台支持范围等信息,资料中暂未提供。