【问题标题】:Azure Download Large Block in chunks with pause resume functionality in JAVAAzure 分块下载大块,在 JAVA 中具有暂停恢复功能
【发布时间】:2019-08-08 11:30:40
【问题描述】:

通过使用 Azure blob 存储的 Java SDK,有没有办法通过恢复功能从 Azure blob 存储下载大文件?

【问题讨论】:

  • 到目前为止你有没有尝试过?
  • 我是 Azure 的新手,我尝试过 BlockBlobURL.download 方法来下载块,并且效果很好。但这不满足我的一个用例是下载过程中发生错误时无法恢复下载。
  • @RajanPatidar 您现在使用的是哪个版本的 Azure Stoarge SDK for Java?

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


【解决方案1】:

绝对是的。根据Azure REST APIGet Blob for Stoage Service的引用,请求头中有一个参数x-ms-range用于下载部分Blob。

x-ms-范围

可选。仅返回指定范围内的 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切片连接成一个完整的切片。

在Azure Storage for Java v8(Legacy)中,直接使用CloudBlobdownloadRange方法,参数offsetlength(等于x-ms-range: <offset>-<offset+length>)。

在 Azure Storage for Java v10 中,将 BlobRange 对象传递给 BlobURLdownload 方法。

【讨论】:

  • 谢谢。我从这里得到了这个想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 2011-01-03
  • 2014-02-07
相关资源
最近更新 更多