首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传完Android Firebase存储中的文件后,如何获得文件下载Url?getDownloadUrl()不工作

上传完Android Firebase存储中的文件后,如何获得文件下载Url?getDownloadUrl()不工作
EN

Stack Overflow用户
提问于 2018-05-28 17:08:35
回答 6查看 35.8K关注 0票数 21

在我的新安卓防火墙项目中,我使用了com.google.firebase:firebase-storage:16.0.1库。

我得到以下错误:

我打开了另一个项目,其中包含了库firebase-storage:15.0.2taskSnapshot.getDownloadUrl();,它们都是针对这个项目工作的。但是在使用了最新的依赖库之后,它就不能工作了。

现在,我如何获得文件URL?

是否可以获得文件下载链接?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-05-28 19:14:31

我已经为我的问题找到了两个解决方案。

Firebase Google文档

代码语言:javascript
复制
//add file on Firebase and got Download Link
filePath.putFile(imageUri).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();
        }
        return filePath.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()){
            Uri downUri = task.getResult();
            Log.d(TAG, "onComplete: Url: "+ downUri.toString());
        }
    }
});

另一个解决方案!

这是一个比google文档更简单和更小的,我将使用它:

代码语言:javascript
复制
filePath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                Log.d(TAG, "onSuccess: uri= "+ uri.toString());
            }
        });
    }
});
票数 50
EN

Stack Overflow用户

发布于 2018-05-28 18:24:30

该方法已在16.0.1版(检查火基释放说明)中被废弃,因此您必须使用

StorageReference.getDownloadUrl()

如果您想在上传文件之后获得它们,那么您必须检查它们的文档这里。它已经更新了。

票数 6
EN

Stack Overflow用户

发布于 2019-02-01 15:33:38

taskSnapshot.getDownloadUrl()是不推荐的,因此我建议在您的addOnSuccessListener()方法中使用storageReference并调用getDownloadUrl()方法来获取文件的url,您可以使用它做任何事。希望能帮上忙。

代码语言:javascript
复制
         mUploadTask = storageRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                // get the image Url of the file uploaded
                storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        // getting image uri and converting into string
                        Uri downloadUrl = uri;
                       fileUrl = downloadUrl.toString();


                    }
                });

            }
        });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50570893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档