Java 如何使用Firebase从上传的文件中获取下载url
在阅读文档时,我发现有一个章节讨论了如何上传文件和获取下载链接。 获取下载链接的代码是: KotlinJava 如何使用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 {
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。这就是你需要回拨电话的原因
另见: