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範圍。