如何使用Firebase从上传的文件中获取下载URL

问题描述 投票:0回答:1

阅读文档后,我找到了一节,讨论如何上传文件并获取其下载链接。获取下载链接的代码是:

Kotlin

val ref = storageRef.child("images/mountains.jpg")
uploadTask = ref.putFile(file)

val urlTask = uploadTask.continueWithTask { task ->
    if (!task.isSuccessful) {
        task.exception?.let {
            throw it
        }
    }
    ref.downloadUrl
}.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val downloadUri = task.result
    } else {
        // Handle failures
        // ...
    }
}

Java

final StorageReference ref = storageRef.child("images/mountains.jpg");
uploadTask = ref.putFile(file);

Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()) {
            throw task.getException();
        }

        // Continue with the task to get the download URL
        return ref.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            Uri downloadUri = task.getResult();
        } else {
            // Handle failures
            // ...
        }
    }
});

但是获得下载URL的行是什么?是“ return ref.getDownloadUrl();” /“ ref.downloadUrl”吗?还是“ Uri downloadUri = task.getResult();” /“ val downloadUri = task.result”?

java android firebase kotlin firebase-storage
1个回答
0
投票

[在两种情况下,称为downloadUri的变量都是最终的下载URL。如果需要,可以使用downloadUri.toString()将其转换为普通的旧字符串。

它是不是 ref.getDownloadUrl()的返回值。这是一个非常常见的错误。 getDownloadUrl()是异步的,不会立即返回URL。这就是为什么您需要回调。

另请参见:How to get URL from Firebase Storage getDownloadURL

© www.soinside.com 2019 - 2024. All rights reserved.