当前位置: 首页 > news >正文

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) }) })

就会返回文件列表:

http://www.jsqmd.com/news/246015/

相关文章:

  • OpenCV DNN模型详解:人脸检测网络结构
  • 自动化流水线:图片上传即自动旋转的方案
  • Qwen2.5-7B企业级应用:低成本验证AI可行性
  • 如何实现毫秒级二维码识别?AI智能二维码工坊部署教程
  • RexUniNLU部署优化:内存与计算资源调配指南
  • 腾讯混元模型妙用:HY-MT1.5云端做多语言SEO
  • RexUniNLU实战:学术影响力分析
  • 为什么推荐Paraformer-large?实测长音频表现优秀
  • uniapp+动态设置顶部导航栏使用详解
  • 新手教程:如何正确安装STLink驱动并连接MCU
  • 基于Python和django的校园物品流转置换平台的设计与实现
  • LangFlow零基础教程:云端GPU免配置,1小时1块快速上手
  • 图片旋转判断模型在考勤系统图像预处理
  • Sonic实战教程:生成前后对比,看参数调整对视频质量的影响
  • 创客匠人:IP 的数字资产革命 ——AI 时代知识变现的核心壁垒构建
  • 创客匠人:智能体驱动的 IP 生态化运营 —— 知识变现的底层逻辑重构
  • 创客匠人:IP 的最小可行性组织 ——AI 时代 1 人撬动千万营收的底层逻辑
  • 创客匠人:AI 驱动的 IP 业务重构 —— 不是环节提效,是重做一次生意
  • 通义千问2.5知识检索:外部数据源接入实战
  • 创客匠人:AI 重构 IP 商业闭环 —— 从环节提效到全链路重做的变现革命
  • 通义千问2.5-7B-Instruct应用开发:智能写作助手实现
  • FST ITN-ZH在政务系统中的应用:公文标准化处理方案
  • 创客匠人:创始人 IP 的角色革命 —— 从执行者到 AI 调度者的组织升级
  • Qwen3-VL-2B多模态模型部署教程:OCR识别与场景描述实战
  • PyTorch通用环境性能评测:预装包对推理速度影响分析
  • 一月面了8家前端开发,感觉自己强的可怕
  • Qwen All-in-One避坑指南:多任务部署常见问题全解
  • A2UI : 以动态 UI 代替 LLM 文本输出的方案
  • DeepSeek-R1如何提升推理速度?CPU优化部署实战案例
  • CosyVoice-300M Lite技术揭秘:如何实现高效语音合成