Skip to content

实验:Workers 读写 R2

这个实验展示 Workers 如何:

  • 创建对象
  • 读取对象
  • 删除对象
  • 列出对象

Worker 支持的 R2 操作

ts
await env.DEMO_BUCKET.put(key, value);
const object = await env.DEMO_BUCKET.get(key);
const text = await object?.text();
await env.DEMO_BUCKET.delete(key);
const listed = await env.DEMO_BUCKET.list();

本项目接口

方法路径作用
GET/api/demo查看 Worker 与 R2 绑定状态
POST/api/demo/object写入一个 R2 对象
GET/api/demo/object读取指定 R2 对象
DELETE/api/demo/object删除指定 R2 对象
GET/api/demo/objects列出 Bucket 中的对象

写入对象

bash
curl -X POST http://localhost:8787/api/demo/object \
  -H "Content-Type: application/json" \
  -d '{"key":"hello.txt","value":"Hello R2 from Workers"}'

读取对象

bash
curl "http://localhost:8787/api/demo/object?key=hello.txt"

删除对象

bash
curl -X DELETE "http://localhost:8787/api/demo/object?key=hello.txt"

安全注意

不要让前端直接保存 R2 密钥。对象读写应该通过 Workers 完成,由 Workers 控制允许哪些 key 被访问。

Cloudflare Learning Lab