java - firebase 存储的 getDownloadUrl() 为所有上传的文件返回相同且错误的链接。如何解决这个问题?

标签 java android firebase firebase-realtime-database firebase-storage

我正在使用 firebase 使用应用程序构建聊天功能。除了从存储中获取图像之外,一切正常。图像上传成功,但存储在数据库中的所有图像的 downloadURL 始终为 com.google.android.gms.tasks.zzu@7e17eff 。如果我从 Firebase 存储复制图像后手动更改数据库中的下载链接,则会获取图像。

处理firbase上传的方法

private void putImageInStorage(final StorageReference storageReference, Uri uri, final String key) {
    storageReference.putFile(uri).addOnCompleteListener(
            new OnCompleteListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                    if (task.isSuccessful()) {
                        message friendlyMessage =
                                new message(null, mUsername, mPhotoUrl,
                                       task.getResult().getStorage().getDownloadUrl().toString() , mFirebaseUser.getUid());
                        mFirebaseDatabaseReference.child(MESSAGES_CHILD).child(key)
                                .setValue(friendlyMessage);
                    } else {
                        Log.w(TAG, "Image upload task was not successful.",
                                task.getException());
                    }
                }
            });
}

在上面的代码中,message (FriendlyMessage) 是 firebaseRecycler 的一个 pojo。

应用程序的 Firebase 依赖项。

implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-storage:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.1.0'
implementation 'com.google.firebase:firebase-config:16.0.0'
implementation 'com.firebaseui:firebase-ui-database:3.3.1'

最佳答案

使用taskSnapshot 对象的getDownloadUrl() 方法已更改。所以,使用

task.getMetadata().getReference().getDownloadUrl().toString() 

而不是-

task.getResult().getStorage().getDownloadUrl().toString()

关于java - firebase 存储的 getDownloadUrl() 为所有上传的文件返回相同且错误的链接。如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51114327/

相关文章:

tomcat - Unsupported major.minor version 要更改哪一个?

Java - UTF8/16 是字符集名称还是字符编码?

Java 找不到我自己的类的符号

android - 如何将 'Google Consent ' 添加到 flutter 应用程序

javascript - 异步/等待上传任务

java - 在java中解析一个复数

android - 无法获取主题属性引用以在 android 中工作

android - 如何以编程方式检查图像(PNG、JPEG)在 Android 中是否已损坏或不受支持?

java - map 上未显示位置

html - Firebase 没有正确显示 css