断点续传下载
更新时间:2022-07-28
概述
BOS 提供了从 Object 指定的位置开始下载的功能,在下载大的 Object 的时候,可以分多次下载。如果下载中断,重启的时候也可以从上次完成的位置开始继续下载。
和简单上传类似,您也需要对该 Object 有读权限。通过设置参数 Range 来支持断点续传,对于比较大的 Object 建议使用该功能。Range 的定义可参考 HTTP RFC。如果在请求头中使用 Range 参数,则返回消息中会包含整个文件的长度和此次返回的范围。例如:Content-Range: bytes 0–9/44,表示整个文件长度为 44 ,此次返回的范围为 0–9。
注意:
- 对于 Range 读大小为 0 字节的对象,会返回 400 错误, Range 是前闭后闭区间。
- 归档存储类型对象需要先取回才能调用 GetObject 接口。
操作方式
示例
以 Java SDK 为例,通过使用 GetObjectRequest 来指定下载范围,实现更精细化地获取 Object 。如果指定的下载范围是 0 - 100,则返回第 0 到第 100 个字节的数据,包括第 100 个,共 101 字节的数据,即 [0, 100] 。
// 新建GetObjectRequest
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectKey);
// 获取0~100字节范围内的数据
getObjectRequest.setRange(0, 100);
// 获取Object,返回结果为BosObject对象
BosObject object = client.getObject(getObjectRequest);
通过 getObjectRequest 的 setRange 方法可以设置返回 Object 的范围。用户也可以用此功能实现文件的分段下载和断点续传。