0

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

+0

不Azure的SDK的Java(https://开头的github .com/WindowsAzure/azure-sdk-for-java)在Android上工作? –

+0

我不知道。如果它起作用,我可以使用它吗?我正在使用天蓝色的移动服务。 –

+0

不,现在不起作用。 –

回答

1

Blob存储服务支持以块的形式下载数据,因此可以分段下载一个非常大的文件,并且当所有的文件都被下载后,您可以组装它们来创建文件。

我还没有与Android/Java的工作作为这样的,所以我不知道实现的具体细节,但总体上说,这是你会做什么:

  • 获取共享访问签名(SAS )在您尝试下载的文件(blob)上。您可能会使用Windows Azure移动服务。确保你获得了与blob上的Read权限的SAS。建议使用SAS,因为这样就不必在设备上共享您的帐户凭据。您可以在这里查看教程,使用移动服务为您的blob创建一个SAS URL(http://www.windowsazure.com/en-us/develop/mobile/tutorials/upload-images-to-storage-dotnet/)。
  • 拥有SAS URI后,您可以直接使用REST API以块形式下载BLOB。您需要调用Get Blob操作。块大小应该在Range请求标头中传递。我不确定用于Azure的Java Storage Client Library是否可以在Android上使用,但是如果可以使用,则不必使用REST API,因为客户端库是REST API的包装。
  • 一旦所有块都下载完毕,您可以将它们组合起来创建一个文件。
0

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