在我的项目中,上传文件后我可以getDownloadUrl()
ref.putFile(imgUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
if(task.getException() != null) {
throw task.getException();
}
}
return ref.getDownloadUrl();
}
}) ...
但是,由于我要使用云功能调整图像的大小并将其重新上传到存储桶中,因此下载URL将会更改,因此了解图像位置的唯一方法是通过StorageReference
。我如何从getDownloadUrl()
StorageReference
?我尝试过ref.getDownloadUrl().addOnSuccessListener
不会被解雇的情况,并且ref.getDownloadUrl().addOnCompleteListener
和task.getResult()
会引发错误。
答案 0 :(得分:1)
尝试使用此方法: 我正在尝试存储图像
您可以从task.getResult()。toString()获取下载URL
final StorageReference ref = FirebaseStorage.getInstance().getReference().child("images").child(imageName)
uploadTask = ref.putBytes(data);
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();
String URL = task.getResult().toString();
} else {
// Handle failures
// ...
}
}
});