java - 如何從Firebase存儲獲取下載URL?



android firebase-storage (1)

我想從Firebase的 uploadTask.addOnProgressListener 方法獲取下載URL。 如何使用以下代碼獲取下載URL?

    UploadTask uploadTask = storageRef.putBytes(data);

    uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
    {
        @Override
        public void onProgress(UploadTask.TaskSnapshot taskSnapshot)
        {
            Log.d("aaaaasessin",""+taskSnapshot.getTask().getResult());
        }
    });

我使用了 taskSnapshot.getTask().getResult() 但是沒有用。


為了獲取下載URL,您需要使用 addOnSuccessListener ,如下面的代碼行:

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                String url = uri.toString();

                //Do what you need to do with url
            }
        });
    }
});

與在2018年5月23日的 Firebase發行說明中一樣 ,提到:

雲存儲版本16.0.1

刪除了已棄用的StorageMetadata.getDownloadUrl()和UploadTask.TaskSnapshot.getDownloadUrl()方法。 要獲取當前下載URL,請使用StorageReference.getDownloadUr()。

所以現在當在 StorageReference 對像上調用 getDownloadUrl() ,它返回一個 Task 對象而 不再 是一個Uri對象。

還請記住,如果您的設備無法訪問Firebase存儲後端,則無論是成功偵聽器還是失敗偵聽器(如果您打算使用它)都將被調用。 只有在Firebase服務器提交或拒絕數據後,才會調用成功/失敗偵聽器。





firebase-storage