1

我正在开发一个使用 azure 移动服务的 android 应用程序。我想从 android 上的 azure storage 下载大文件。我想以块或类似的方式下载大文件。我该怎么做 ?有没有为此的java库?

4

3 回答 3

3

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

我没有使用过 Android/Java,所以我不知道实现的确切细节,但一般来说这是你会做的:

  • 在您尝试下载的文件 (blob) 上获取共享访问签名 (SAS)。您可以为此目的使用 Windows Azure 移动服务。Read确保您获得了对 blob具有权限的 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请求标头中传递。我不确定 Azure 的 Java 存储客户端库是否可以在 Android 上使用,但如果可以使用,那么您不必使用 REST API,因为客户端库是 REST API 的包装器。
  • 下载所有块后,您可以将它们组合起来以创建文件。
于 2013-10-25T11:00:45.693 回答
1

我一直在从谷歌打这个过时的问题,所以为了完整起见,我添加了这个最新的答案(我试图添加这个作为评论,但它太长了)。

移动服务的链接是:

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

Microsoft Azure 存储 SDK 的链接是:

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

于 2015-06-25T19:21:42.583 回答
0

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

于 2013-10-28T18:38:04.360 回答