通过使用Azure blob存储的Java SDK,是否可以从具有恢复功能的Azure blob存储下载大文件?
答案 0 :(得分:0)
绝对可以。根据用于Stoage服务的Azure REST API Get Blob
的参考,请求头中有一个参数x-ms-range
,用于下载Blob的一部分。
x毫秒范围
可选。仅返回指定范围内的Blob字节。如果同时指定了Range和x-ms-range,则该服务将使用x-ms-range的值。如果两者均未指定,则返回整个blob内容。有关更多信息,请参见Specifying the Range Header for Blob Service Operations。
因此,您可以通过向x-ms-range
传递bytes=<the byte size of your downloaded>-
值来继续下载工作,以继续下载工作线程中Blob的完整尾部。
或者考虑性能,您可以首先获取blob的字节大小,然后使用x-ms-range
在多个工作线程中分别下载blob的切片,并将blob的切片连接为一个完整的一个。
在用于Java v8(旧版)的Azure存储中,直接使用CloudBlob
和参数offset
和length
的{{1}}的{{3}}方法(它等于x-ms-range: <offset>-<offset+length>
)。
在用于Java v10的Azure存储中,将downloadRange
对象传递到BlobURL
的{{3}}方法。