【问题标题】:Download Large Files From Azure on Android在 Android 上从 Azure 下载大文件
【发布时间】:2013-11-04 10:30:45
【问题描述】:

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

【问题讨论】:

  • Azure SDK for Java (github.com/WindowsAzure/azure-sdk-for-java) 能否在 Android 上运行?
  • 我不知道。如果它有效,我可以使用它吗?我正在使用 azure 移动服务。
  • 不,现在不行。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我不断从 Google 提出这个过时的问题,所以为了完整起见,我添加了这个最新的答案(我试图添加这个作为评论,但它太长了)。

    移动服务的链接是:

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

    Microsoft Azure Storage SDK 的链接是:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-25
        • 2017-08-25
        • 2011-02-07
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 2023-03-20
        相关资源
        最近更新 更多