在Android上从Azure下载大文件

时间:2013-10-25 10:38:44

标签: android azure azure-storage-blobs azure-mobile-services android-download-manager

我正在开发一款使用azure移动服务的Android应用。我想从android上的azure存储下载大文件。我想下载块中的大文件或类似的东西。我该怎么做 ?有没有Java库?

3 个答案:

答案 0 :(得分:1)

Blob存储服务支持以块的形式下载数据,因此可以分段下载非常大的文件,当下载完所有文件后,您可以将它们组合起来创建文件。

我没有使用过Android / Java,所以我不知道实现的具体细节,但一般来说这就是你要做的事情:

  • 在您尝试下载的文件(blob)上获取共享访问签名(SAS)。您可以使用Windows Azure Mobile Service来实现此目的。确保您获得了具有Read权限的SAS。建议使用SAS,因为您无需在设备上共享帐户凭据。您可以在此处查看教程,以使用移动服务(http://www.windowsazure.com/en-us/develop/mobile/tutorials/upload-images-to-storage-dotnet/)为您的blob创建SAS URL。
  • 获得SAS URI后,您可以直接使用REST API以块的形式下载blob。您需要调用Get Blob操作。块大小应该在Range请求标头中传递。我不确定是否可以在Android上使用适用于Azure的Java存储客户端库,但是如果可以使用它,那么您不必使用REST API,因为客户端库是REST API的包装器。
  • 下载完所有块后,您只需将它们组合起来即可创建文件。

答案 1 :(得分:0)

目前用于Azure存储的Java库目前不支持Android(这是我们提供的功能请求,我们目前正在研究这个功能)。由于安全原因,建议不要在移动设备上使用完全共享密钥身份验证,因此使用SAS或匿名访问是首选方案。如果您的方案是简单地下载blob,那么使用范围标头的简单GET请求就足够了,但是您需要实现逻辑来聚合应用程序中的blob范围。

答案 2 :(得分:0)

我一直在向谷歌提出这个过时的问题,所以为了完整起见,我已经添加了这个最新的答案(我试图将其添加为评论,但它太长了。)

移动服务的链接是:

http://azure.microsoft.com/en-gb/develop/mobile/android-samples/

以及Microsoft Azure Storage SDK的链接:

https://github.com/Azure/azure-storage-android