适合场景
用户上传、静态文件、备份、训练数据、媒体原始文件
Wrangler 配置
{
"r2_buckets": [
{ "binding": "BUCKET", "bucket_name": "my-bucket" }
]
} Worker 代码
// 读
const obj = await env.BUCKET.get(key);
if (!obj) return new Response("not found", { status: 404 });
return new Response(obj.body, {
headers: { etag: obj.httpEtag },
});
// 写
await env.BUCKET.put(key, request.body, {
httpMetadata: { contentType: "image/png" },
}); 实现注意事项
- ● S3 兼容但有些 API 行为不一致(特别是 multipart 上传细节)
- ● 默认无 CDN 加速;公开访问要配 custom domain 或用 Worker 前置
- ● 单 PUT 上限 5GB;更大要 multipart upload
已复制