Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Firebase从上传的文件中获取下载url_Java_Android_Firebase_Kotlin_Firebase Storage - Fatal编程技术网

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

Java 如何使用Firebase从上传的文件中获取下载url,java,android,firebase,kotlin,firebase-storage,Java,Android,Firebase,Kotlin,Firebase Storage,在阅读文档时,我发现有一个章节讨论了如何上传文件和获取下载链接。 获取下载链接的代码是: Kotlin val ref = storageRef.child("images/mountains.jpg") uploadTask = ref.putFile(file) val urlTask = uploadTask.continueWithTask { task -> if (!task.isSuccessful) { task.exception?.let {

在阅读文档时,我发现有一个章节讨论了如何上传文件和获取下载链接。 获取下载链接的代码是:

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
            // ...
        }
    }
});
final-storagereferef=storageRef.child(“images/mountains.jpg”);
uploadTask=ref.putFile(文件);
Task urlTask=uploadTask.continueWithTask(新的Continuation(){
@凌驾
公共任务(@NonNull Task Task)引发异常{
如果(!task.issusccessful()){
抛出task.getException();
}
//继续执行任务以获取下载URL
return ref.getDownloadUrl();
}
}).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Uri downloadUri=task.getResult();
}否则{
//处理故障
// ...
}
}
});
但是我得到下载URL的线路是什么? 是“return ref.getDownloadUrl();”/“ref.downloadUrl”吗?
或者“
Uri downloadUri=task.getResult();
”/“
val downloadUri=task.result
”?

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

它不是
ref.getDownloadUrl()
的返回值。这是一个非常常见的错误
getDownloadUrl()
是异步的,不会立即返回URL。这就是你需要回拨电话的原因

另见: