news 2026/4/28 14:26:09

cloudflare+hono使用worker实现api接口和r2文件存储和下载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cloudflare+hono使用worker实现api接口和r2文件存储和下载

步骤也很简单,就是使用命令创建一个hono创建一个基础框架,然后绑定r2对象存储,然后写上传和下载的接口,然后测试发布即可。

使用命令:

pnpm create cloudflare@latest upload-r2

然后创建后打开,绑定r2:

bucket_name 这里添加你的存储桶名称即可,没有的话,在后台页面创建一个存储桶或者使用命令行创建一个。

然后运行命令:

wrangler deploy --minify

这个主要是将绑定的存储桶R2可以在代码中使用不提示报错。

然后在index.ts中写上传逻辑:

app.post('/upload', async (c) => { const form = await c.req.parseBody() const file = form['file'] as File if (!file || !file.name) { return c.json({ error: 'No file uploaded' }, 400) } const buffer = await file.arrayBuffer() const object = await c.env.R2.put(file.name, buffer) return c.json({ object }) })

这个代码主要就是拿到post请求中的file文件,然后使用R2存储到桶里面,写完之后会返回存储后的结果,可以本地运行测试,本地启动服务后,使用postman或者apifox都可以测试:

说明没有问题,这里可以上传任意类型的文件,访问的时候也可以访问任意类型。为什么不用Express框架?因为Express框架和cf不是很兼容,在访问视频文件或者大文件的时候,和cf不兼容,访问不到。所以强烈推荐Hono这个框架,而且Hono用起来和Express差不多,甚至更方便。

然后开始写访问文件逻辑和下载逻辑:

app.get('/download/:key', async (c) => { const key = c.req.param('key') const object = await c.env.R2.get(key) if (!object) { return c.json({ error: 'File not found' }, 404) } return c.body(object.body) })

这里主要就是发送get请求访问上传的文件,在apifox中访问刚才上传的文件:完美访问

还可以查询桶里面有哪些文件:

app.get('/files', async (c) => { const objects = await c.env.R2.list() return c.json({ files: objects.objects.map((object) => object.key) }) })

就会返回文件列表:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 17:14:02

NewBie-image硬件选择指南:什么时候该买显卡?何时用云端?

NewBie-image硬件选择指南:什么时候该买显卡?何时用云端? 你是不是也经历过这样的纠结:想玩AI生图,特别是像NewBie-image这种专为动漫风格打造的高质量模型,但面对动辄上万元的显卡投资,心里直…

作者头像 李华
网站建设 2026/4/28 12:25:33

YOLOv12自定义数据集标注:云端工具链一站式解决

YOLOv12自定义数据集标注:云端工具链一站式解决 你是不是也遇到过这种情况?作为一名生物学家,想要训练一个细胞检测模型来自动识别显微镜下的细胞类型或异常结构。理想很美好——AI帮你数细胞、分类、标记位置;但现实却很骨感&am…

作者头像 李华
网站建设 2026/4/26 8:32:23

AI证件照一键排版攻略:8张1寸照自动生成,省去手动裁剪

AI证件照一键排版攻略:8张1寸照自动生成,省去手动裁剪 你是不是也遇到过这种情况:考试报名、简历投递、签证申请,突然需要打印一版包含8张1寸照片的A4纸?打开电脑想自己排版,结果发现——对不齐、间距乱、…

作者头像 李华
网站建设 2026/4/28 3:19:30

播客制作者狂喜:VibeVoice支持96分钟超长输出

播客制作者狂喜:VibeVoice支持96分钟超长输出 1. 引言:对话式语音合成的新范式 在内容创作日益多元化的今天,播客、有声书和虚拟角色互动已成为信息传播的重要形式。然而,传统文本转语音(TTS)系统在处理多…

作者头像 李华
网站建设 2026/4/22 17:14:10

大厂定薪逻辑大揭秘!学长 20 年 HR 经验,教你跳槽拿高薪

很多小伙伴跳槽时都会遇到这样的困惑:上一家公司月薪 20K,目标岗位明明预算能到 30K,谈薪时却只给到 22K,这到底是为啥?作为深耕 HR 领域 20 年的学长,今天就把大厂定薪的底层逻辑扒透,帮你避开…

作者头像 李华
网站建设 2026/4/28 2:07:03

SAM 3性能测试:图像分割速度与精度对比分析

SAM 3性能测试:图像分割速度与精度对比分析 1. 引言 随着计算机视觉技术的不断演进,图像和视频中的对象分割已成为智能监控、自动驾驶、医疗影像分析等领域的核心技术之一。传统的分割方法往往依赖于大量标注数据和特定任务模型,泛化能力有…

作者头像 李华