- A+
建立一个 R2 桶
打开 cloudflare 的控制面板的 R2 并且建立一个桶
新建一个 worker
代码如下,我只开放了 GET 方法,当然官方文档有详细的介绍
注意第4行加了一个 decodeURI 不然中文文件名会找不到
export default {
async fetch(request, env) {
const url = new URL(request.url);
const key = decodeURI(url.pathname.slice(1));
console.log(key)
switch (request.method) {
case 'GET':
const object = await env.R2.get(key);
if (!object || !object.body) {
return new Response('Object Not Found', { status: 404 });
}
const headers = new Headers();
object.writeHttpMetadata(headers);
headers.set('etag', object.httpEtag);
return new Response(object.body, {
headers,
});
default:
return new Response('Method Not Allowed', {
status: 405,
headers: {
Allow: 'GET',
},
});
}
},
};
绑定 R2 到 worker 上
设置-变量中绑定R2存储桶,注意环境变量名要和脚本的变量名一致
绑定自定义域名
现在已经可以直接通过 worker 的 url 进行下载了,但是也可以绑定一个自定义的域名
- 在 cloudflare 上关联域名
- 在域名的 dns 解析设置一个子域名,目标随便设置,但是要打开代理模式
- 在域名的 Workers的设置-触发器中添加自定义域, url 为
xxx.domain.com/*
, worker 选择刚刚新建的worker
然后就大功告成,可以测试一下,上传个文件test.zip
到 R2 上,然后浏览器打开 https://xxx.domain.com/test.zip
应该就可以下载了