Azure下载块中的大块,并具有JAVA中的暂停恢复功能

时间:2019-03-18 06:20:33

标签: azure download blob azure-storage azure-java-sdk

通过使用Azure blob存储的Java SDK,是否可以从具有恢复功能的Azure blob存储下载大文件?

1 个答案:

答案 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和参数offsetlength的{​​{1}}的{​​{3}}方法(它等于x-ms-range: <offset>-<offset+length> )。

在用于Java v10的A​​zure存储中,将downloadRange对象传递到BlobURL的{​​{3}}方法。