golang文件下载断点续传(下载客户端)
2024-08-30 12:25:37
客户端:
//const (
// UA = "Golang Downloader from Kejibo.com"
//)
func DownloadController(ctx *gin.Context) { f, err := os.OpenFile("./file.exe", os.O_RDWR|os.O_CREATE, ) //O_RDWR|O_CREATE,也就是文件不存在的情况下就建一个空文件,因为windows下还有BUG,如果使用这个O_CREATE,就会直接清空文件,所以windows不用这个标志,你自己事先建立好文件。
if err != nil {
panic(err)
}
stat, err := f.Stat() //获取文件状态
if err != nil {
panic(err)
}
f.Seek(stat.Size(), ) //把文件指针指到文件末,当然你说为何不直接用 O_APPEND 模式打开,没错是可以。我这里只是试验。
//f.Seek(int64(os.O_APPEND), 0)
url1 := "http://dl.google.com/chrome/install/696.57/chrome_installer.exe"
var req http.Request
req.Method = "GET"
//req.UserAgent = UA //客户端信息字符串,不过我加上UserAgent,一直报错,不知道怎么回事,暂时不用它
req.Close = true
req.URL, err = url.Parse(url1)
if err != nil {
panic(err)
}
header := http.Header{}
header.Set("Range", "bytes="+strconv.FormatInt(stat.Size(), )+"-")
req.Header = header
resp, err := http.DefaultClient.Do(&req)
if err != nil {
panic(err)
}
written, err := io.Copy(f, resp.Body)
if err != nil {
panic(err)
}
println("written: ", written)
}
另外一个例子:
传送门:https://blog.csdn.net/luckytanggu/article/details/79830493
无断点续传:https://www.jianshu.com/p/b49cc19d26f0
最新文章
- Unit Testing with NSubstitute
- 设计模式之美:Bridge(桥接)
- coco2dx加载网络图片并保存
- FastReport处理空日期
- Linux客户/服务器程序设计范式1——并发服务器(多进程)
- Scala中的If判断&;While&;For循环
- Linux安装oracle 10g常见问题之——OUI-25031
- HDU 5903 - Square Distance [ DP ]	( BestCoder Round #87 1002 )
- 反思java web的发展
- 注意,WebDeploy服务会占用80端口。(Windows关闭了IIS,80端口任然被占用)
- React 精要面试题讲解(五) 高阶组件真解
- Python内置函数(65)——type
- C# 换行
- 500G !!史上最全的JAVA全套教学视频网盘分享 (JEECG开源社区)
- 移动端根元素(html)的设置
- java:根据利润表计算奖金所得
- jvm虚拟机---执行引擎子系统
- GEEK-2018之隐藏在混乱之中的绝密情报 writeup
- HDU 5067 Harry And Dig Machine(状压DP)(TSP问题)
- 使用DOM创建xml文件
热门文章
- iview 验证 trigger: 'blur,change', 同时加两个,省的每次还想input 还是 select
- HTML之网页的基本介绍
- win10搭建Java环境
- CPP-网络/通信:COM
- 运用模逆运算(同余方程)来解决Matlab课上的一道思考题
- CS193p Lecture 6 - UINavigation, UITabBar
- 【网络流】[USACO4.2]草地排水Drainage Ditches
- react 组件架构
- python--操作系统介绍,进程的创建(并发)
- Day05基本运算符,if判断和while循环