用途:Cloudflare R2 是运行在 Cloudflare 边缘网络上的 S3 兼容对象存储,本资料面向在 Cloudflare Workers 中使用 R2 的开发者,覆盖从建桶到读写对象的完整流程。
主要能力:通过 Wrangler CLI 创建存储桶(npx wrangler r2 bucket create my-bucket),在 wrangler.jsonc 中配置 r2_buckets 绑定,代码中通过 env.MY_BUCKET 访问。Workers API 提供 put() 上传、get() 下载、head() 读取元数据、delete() 删除(支持一次最多 1000 个键的批量删除)、list() 列举(支持 limit、cursor 分页、prefix 前缀与 delimiter 目录式列举)。put/get 支持 httpMetadata 与 customMetadata、条件操作(onlyIf 的 etagMatches、uploadedBefore)、MD5 校验、Range 范围请求。大于 100MB 或需断点续传时可用分片上传:createMultipartUpload、resumeMultipartUpload、uploadPart、complete、abort。预签名 URL 借助 aws4fetch 生成,可让客户端直传 R2,减少 Worker 带宽占用。
使用方式:先建桶并配置绑定,再在 Worker 中调用上述 API,最后 npx wrangler deploy 部署并用 curl 测试。预签名需安装 aws4fetch 并配置 R2_ACCESS_KEY_ID、R2_SECRET_ACCESS_KEY、ACCOUNT_ID。
适用场景:文件上传下载、私有对象临时授权、大文件分片与断点续传、客户端直传、按前缀或目录列举对象。
限制:分片上传不适合小于 5MB 的文件,Worker 内上传建议直接用 put();预签名 URL 仅适用于 R2 端点,不适用于自定义域名;存储桶命名需 3-63 字符、仅小写字母数字与连字符、以字母或数字开头结尾。资料未提供收费、价格与性能数据。