S3 api 断点下载

  • 断点下载流程分析

             

 

1, 发送head协议获取下载文件的大小

2, 根据分段大小形成xml文件, xml文件的命令规则为文件名+_map.xml,举例如下

<download>

  <Part>

    <offset>0</offset>

    <lenth>104857600</lenth>

    <is_ok>false</is_ok>

  </Part>

  <Part>

    <offset>104857600</offset>

    <lenth>104857600</lenth>

    <is_ok>false</is_ok>

  </Part>

  <Part>

    <offset>209715200</offset>

    <lenth>104857600</lenth>

    <is_ok>false</is_ok>

  </Part>

  <Part>

    <offset>314572800</offset>

    <lenth>40413600</lenth>

    <is_ok>false</is_ok>

  </Part>

</download>

Part代表每一个块,offset带便当前的偏移量,lenth代表偏移的大小,is_ok用来标记当前块是否上传成功.

3, 开始进行上传, 每次成功下载一个文件, 下载到本地后, 便将对应的块置为true, 命令规则为:range的值 +文件名, 在这里进行下载的时候要在发送协议的时候使用range字段。

4, 下载所有分段结束后, 根据配置文件进行聚合。

5, 程序异常crush处理

在下载的过程中, 程序发生crush到时下载中断, 此时在此进行下载, 程序判断如上xml是否存在, 不存在重新生成, 存在则根据is_ok字段判断当前文件已经下载了哪些part, 如果字段的值为false, 则下载该字段, 下载完成之后进行聚合。

 

二. Java代码如下

见博客“断点下载java实例”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值