我正在开发一个使用 azure 移动服务的 android 应用程序。我想从 android 上的 azure storage 下载大文件。我想以块或类似的方式下载大文件。我该怎么做 ?有没有为此的java库?
问问题
1493 次
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 的链接是:
于 2015-06-25T19:21:42.583 回答
0
当前用于 Azure 存储的 Java 库目前不支持 Android(这是我们的功能请求,我们目前正在调查)。出于安全原因,在较高级别上不建议在移动设备上使用完全共享密钥身份验证,因为使用 SAS 或匿名访问是首选方案。如果您的方案是简单地下载一个 blob,则一个带有范围标头的简单 GET 请求就足够了,但是您需要实现逻辑来聚合应用程序中的 blob 范围。
于 2013-10-28T18:38:04.360 回答