taskSnapshot.getDownloadUrl()方法不起作用

Dav*_*d G 12 android

private void uploadImageToFirebaseStorage() {
    StorageReference profileImageRef =
        FirebaseStorage.getInstance().getReference("profilepics/" + System.currentTimeMillis() + ".jpg");

    if (uriProfileImage != null) {
        progressBar.setVisibility(View.VISIBLE);
        profileImageRef.putFile(uriProfileImage)
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(@NonNull UploadTask.TaskSnapshot taskSnapshot) {
                    progressBar.setVisibility(View.GONE);
                    profileImageUrl = taskSnapshot.**getDownloadUrl**().toString();
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    progressBar.setVisibility(View.GONE);
                    Toast.makeText(ProfileActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

taskSnapshot.getDownloadUrl() 不工作的方法在它下面出现红线

小智 44

在Firebase Storage API版本16.0.1中.使用taskSnapshot对象的getDownloadUrl()方法已更改.现在您可以使用'
Firebase Storage API 从firebase存储中获取下载URL.

  • *这里是 firebaser* **这个答案是错误的。** 虽然它乍一看似乎可以工作(因为它编译),但 `getDownloadUrl().toString()` 的结果不是下载 URL,而是一个字符串表示形式`任务`对象。如需更好的答案,请参阅 /sf/answers/3885274851/ 或 Firebase 文档中的示例:https://firebase.google.com/docs/storage/android/download-files#download_data_via_url (4认同)
  • 该方法没有返回下载 URL(这是预期的)。链接 - /sf/answers/3885274851/ 。此代码给出了预期的输出。(文件的实际下载地址) (3认同)
  • 我使用的是 Firebase Storage API 版本 16.0.5,任务必须被引用为 uploadTask.getResult().getMetadata().getReference().getDownloadUrl().toString(); (2认同)

小智 11

要从存储获取imageUrl路径,请使用以下代码:

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        if (taskSnapshot.getMetadata() != null) {
            if (taskSnapshot.getMetadata().getReference() != null) {
                Task<Uri> result = taskSnapshot.getStorage().getDownloadUrl();
                result.addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        String imageUrl = uri.toString();
                        //createNewPost(imageUrl);
                    }
                });
            }
        }
    }});
Run Code Online (Sandbox Code Playgroud)

就这些

注意:不要忘记在uploadFile方法中初始化StorageReference和UploadTask。


Amr*_*per 7

尝试使用它会从FireBase存储下载图像

FireBase库版本16.0.1

Task<Uri> result = taskSnapshot.getMetadata().getReference().getDownloadUrl();
result.addOnSuccessListener(new OnSuccessListener<Uri>() {
      @Override
      public void onSuccess(Uri uri) {
             String photoStringLink = uri.toString();
      }
});
Run Code Online (Sandbox Code Playgroud)