您可以使用仪表板、Workers API、S3 API 或命令行工具从 R2 下载对象。
-
在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。
Go to Overview ↗ -
选择您的存储桶。
-
找到要下载的对象。
-
选择对象的 ...,然后点击 Download(下载)。
在 Workers 中使用 R2 绑定 下载对象:
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
const object = await env.MY_BUCKET.get("image.png");
return new Response(object.body);
},
} satisfies ExportedHandler<Env>;完整文档请参阅 Workers API。
使用 S3 兼容 SDK 下载对象。您需要 账户 ID 和 R2 API 令牌。
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
const S3 = new S3Client({
region: "auto", // Required by SDK but not used by R2
// Provide your Cloudflare account ID
endpoint: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`,
// Retrieve your S3 API credentials for your R2 bucket via API tokens (see: https://developers.cloudflare.com/r2/api/tokens)
credentials: {
accessKeyId: '<ACCESS_KEY_ID>',
secretAccessKey: '<SECRET_ACCESS_KEY>',
},
});
const response = await S3.send(
new GetObjectCommand({
Bucket: "my-bucket",
Key: "image.png",
}),
);import boto3
s3 = boto3.client(
service_name="s3",
# Provide your Cloudflare account ID
endpoint_url=f"https://{ACCOUNT_ID}.r2.cloudflarestorage.com",
# Retrieve your S3 API credentials for your R2 bucket via API tokens (see: https://developers.cloudflare.com/r2/api/tokens)
aws_access_key_id=ACCESS_KEY_ID,
aws_secret_access_key=SECRET_ACCESS_KEY,
region_name="auto", # Required by SDK but not used by R2
)
response = s3.get_object(Bucket="my-bucket", Key="image.png")
image_data = response["Body"].read()有关所有 S3 API 方法,请参阅 R2 的 S3 API 文档。
对于客户端直接从 R2 下载的场景,请使用预签名 URL。您的服务器生成临时下载 URL,客户端可以使用该 URL 而无需暴露 API 凭据。
- 您的应用程序使用 S3 SDK 生成预签名 GET URL
- 将 URL 发送给客户端
- 客户端使用预签名 URL 直接从 R2 下载
有关生成和使用预签名 URL 的详情,请参阅预签名 URL。
使用 Wrangler 下载对象。运行 r2 object get 命令:
wrangler r2 object get test-bucket/image.png文件将下载到当前工作目录。您还可以使用 --file 标志在下载时为对象设置新名称,以及使用 --pipe 标志将下载内容通过标准输出 (stdout) 输出。