如何从StorageReference获取下载URL

时间:2018-12-14 18:20:51

标签: android firebase firebase-storage

在我的项目中,上传文件后我可以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().addOnCompleteListenertask.getResult()会引发错误。

1 个答案:

答案 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
            // ...
        }
    }
    });