news 2026/9/29 6:49:50

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/9/27 7:10:57

通义千问3-4B企业应用案例:智能客服RAG系统部署完整指南

通义千问3-4B企业应用案例:智能客服RAG系统部署完整指南 1. 引言:为何选择通义千问3-4B构建企业级RAG客服系统 随着大模型技术的普及,企业在智能客服领域对低成本、高响应、可私有化部署的解决方案需求日益增长。传统基于GPT类大模型的方案…

作者头像 李华
网站建设 2026/9/28 0:09:08

亲测SenseVoiceSmall镜像,AI识别笑声掌声超惊艳

亲测SenseVoiceSmall镜像,AI识别笑声掌声超惊艳 1. 引言:语音理解进入“富文本”时代 随着人工智能在语音领域的持续突破,传统的“语音转文字”已无法满足日益复杂的交互需求。用户不再只关心说了什么,更关注怎么说的——语气是…

作者头像 李华
网站建设 2026/9/27 14:13:40

Java面试题及答案(2026年Java面试题大全带答案)

前言 我相信大多 Java 开发的程序员或多或少经历过 BAT 一些大厂的面试,也清楚一线互联网大厂 Java 面试是有一定难度的,小编经历过多次面试,有满意的也有备受打击的。因此呢小编想把自己这么多次面试经历以及近期的面试真题来个汇总分析&am…

作者头像 李华
网站建设 2026/9/27 23:48:51

Qwen-Image-2512-ComfyUI代码实例:自定义工作流搭建教程

Qwen-Image-2512-ComfyUI代码实例:自定义工作流搭建教程 1. 引言 1.1 学习目标 本文旨在帮助开发者和AI艺术创作者快速掌握如何基于阿里开源的高分辨率图像生成模型 Qwen-Image-2512,在 ComfyUI 可视化推理框架中构建自定义图像生成工作流。通过本教程…

作者头像 李华
网站建设 2026/9/26 22:12:42

Qwen3-0.6B多轮对话测试,8轮内连贯性优秀

Qwen3-0.6B多轮对话测试,8轮内连贯性优秀 你是否曾因小模型在多轮对话中“忘记”上下文而感到困扰?2025年4月,阿里巴巴开源的Qwen3系列带来了令人惊喜的答案——Qwen3-0.6B。这款仅含6亿参数的轻量级语言模型,在实际测试中展现出…

作者头像 李华