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

Golang使用HTTP框架zdpgo_resty实现文件下载

核心代码

代码解析:

  • client.SetOutputDirectory("Downloads") 设置下载目录
  • client.R().SetOutput("test.go").Get("http://127.0.0.1:3333/download 指定下载文件名并进行下载
// 设置输出目录路径,如果目录不存在,rest将创建一个!
// 这是可选的,如果你计划在Request中使用绝对路径。SetOutput '和可以一起使用。
client.SetOutputDirectory("Downloads")// HTTP响应被保存到文件中,类似于curl -o标志
_, err := client.R().SetOutput("test.go").Get("http://127.0.0.1:3333/download")

服务端

package mainimport ("net/http""os""zdpgo_chi""zdpgo_chi/middleware"
)func main() {r := zdpgo_chi.NewRouter()r.Use(middleware.RequestID)r.Use(middleware.RealIP)r.Use(middleware.Logger)r.Use(middleware.Recoverer)r.Get("/download", func(w http.ResponseWriter, r *http.Request) {fileBytes, err := os.ReadFile("server/main.go")if err != nil {panic(err)}w.WriteHeader(http.StatusOK)w.Header().Set("Content-Type", "application/octet-stream")w.Write(fileBytes)return})http.ListenAndServe(":3333", r)
}

客户端

package mainimport ("fmt""zdpgo_resty"
)func main() {client := zdpgo_resty.New()// 设置输出目录路径,如果目录不存在,rest将创建一个!// 这是可选的,如果你计划在Request中使用绝对路径。SetOutput '和可以一起使用。client.SetOutputDirectory("Downloads")// HTTP响应被保存到文件中,类似于curl -o标志_, err := client.R().SetOutput("test.go").Get("http://127.0.0.1:3333/download")// 使用绝对路径的OR// 注意:输出目录路径不用于绝对路径_, err = client.R().SetOutput("Downloads/test2.go").Get("http://127.0.0.1:3333/download")fmt.Println(err)
}

相关文章:

  • [Linux打怪升级之路]-进程和线程
  • Web基础考点
  • vue中axios的使用
  • faster_whisper语音识别
  • jvm的类加载
  • 『USB3.0Cypress』FPGA开发(3)GPIF II短包零包时序分析
  • next.js 服务端组件 -客户端组件
  • 游戏子弹类python设计与实现详解
  • Java进阶学习笔记20——枚举
  • Windows安装并启动Redis服务端(zip包)
  • 三生随记——山洞之谜
  • 期权课程之第二节【买方和卖方的误区和区别】
  • LeetCode:279.完全平方数
  • 如何在Windows 10上对硬盘进行碎片整理?这里提供步骤
  • Mycat+Mysql搭建数据集群实现数据分片存储
  • 收藏网友的 源程序下载网
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 《Java编程思想》读书笔记-对象导论
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • const let
  • co模块的前端实现
  • export和import的用法总结
  • Idea+maven+scala构建包并在spark on yarn 运行
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript的使用你知道几种?(上)
  • leetcode讲解--894. All Possible Full Binary Trees
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Mybatis初体验
  • ReactNative开发常用的三方模块
  • 给初学者:JavaScript 中数组操作注意点
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 时间复杂度与空间复杂度分析
  • 算法---两个栈实现一个队列
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 突破自己的技术思维
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • PostgreSQL之连接数修改
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #if 1...#endif
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (02)vite环境变量配置
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (C#)一个最简单的链表类
  • (CPU/GPU)粒子继承贴图颜色发射
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (十) 初识 Docker file
  • (原)本想说脏话,奈何已放下
  • (转)h264中avc和flv数据的解析
  • (转)jdk与jre的区别