go http post文件 key_go|通过HTTP请求分片下载一个大文件

核心是计算好分片的起始位置,然后设置好Header的Range字段

p.request.Header.Set("Range", fmt.Sprintf("bytes=%d-%d", p.start, p.end))

分片合并,按序号将分片组装即可,shell的简单实现:

cat (ls |sort -n) >1.zip

借助Goroutine和channel可以实现并发下载分片

完整代码如下:

package mainimport ("fmt""io""io/ioutil""log""math""net/http""os""strconv""sync")var (size    int64 = 5 * 1024 * 1024 // 分块大小workers       = 3               // 并发下载数)type part struct {partID  intstart   int64end     int64request *http.Requestclient  *http.Client}func (p *part) Do() *http.Response {p.request.Header.Set("Range", fmt.Sprintf("bytes=%d-%d", p.start, p.end))resp, err := p.client.Do(p.request)if err != nil {fmt.Println(err)}log.Printf("[%d]Content-R
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值