跳转到内容
搜索文档

下载对象

最后更新 查看 MarkdownAgent 设置

您可以使用仪表板、Workers API、S3 API 或命令行工具从 R2 下载对象。

通过仪表板下载

  1. 在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。

    Go to Overview ↗
  2. 选择您的存储桶。

  3. 找到要下载的对象。

  4. 选择对象的 ...,然后点击 Download(下载)

通过 Workers API 下载

在 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 API 下载

使用 S3 兼容 SDK 下载对象。您需要 账户 IDR2 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 文档

预签名 URL

对于客户端直接从 R2 下载的场景,请使用预签名 URL。您的服务器生成临时下载 URL,客户端可以使用该 URL 而无需暴露 API 凭据。

  1. 您的应用程序使用 S3 SDK 生成预签名 GET URL
  2. 将 URL 发送给客户端
  3. 客户端使用预签名 URL 直接从 R2 下载

有关生成和使用预签名 URL 的详情,请参阅预签名 URL

通过 Wrangler 下载

使用 Wrangler 下载对象。运行 r2 object get 命令

wrangler r2 object get test-bucket/image.png

文件将下载到当前工作目录。您还可以使用 --file 标志在下载时为对象设置新名称,以及使用 --pipe 标志将下载内容通过标准输出 (stdout) 输出。

这篇文档对您有帮助吗?