java - 如何从 Firebase 存储获取下载网址?

标签 java android firebase firebase-storage

我想从 Firebase 的 uploadTask.addOnProgressListener 方法获取下载网址。如何使用以下代码获取下载网址?

    UploadTask uploadTask = storageRef.putBytes(data);

    uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
    {
        @Override
        public void onProgress(UploadTask.TaskSnapshot taskSnapshot)
        {
            Log.d("aaaaasessin",""+taskSnapshot.getTask().getResult());
        }
    });

我使用了 taskSnapshot.getTask().getResult() 但这不起作用。

最佳答案

2019 年 8 月 22 日编辑:

Android SDK 中的 StorageReference 类最近添加了一个名为 list() 的新方法。 .

要解决此问题,您需要循环 ListResult 并调用 getDownloadUrl() 来获取每个文件的下载 URL。请记住,getDownloadUrl() 方法是异步的,因此它返回一个 Task 对象。详情请参阅下文。我什至写了一篇关于这个主题的文章,名为:

<小时/>

为了获取下载网址,您需要使用addOnSuccessListener,如以下代码行所示:

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                String url = uri.toString();

                //Do what you need to do with url
            }
        });
    }
});

Firebase release notes中所示2018年5月23日提到:

Cloud Storage version 16.0.1

Removed the deprecated StorageMetadata.getDownloadUrl() and UploadTask.TaskSnapshot.getDownloadUrl() methods. To get a current download URL, use StorageReference.getDownloadUr().

现在打电话 getDownloadUrl() 时在StorageReference上它返回一个 Task 对象,而不再是一个 Uri 对象。

另请记住,如果您的设备无法到达 Firebase Storage 后端,则不会调用成功监听器或失败监听器(如果您打算使用它)。仅当数据提交至 Firebase 服务器或被 Firebase 服务器拒绝后,才会调用成功/失败监听器。

关于java - 如何从 Firebase 存储获取下载网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60395518/

相关文章:

java - 字符串实用程序拆分 - Linux

java - Netty - Xml 字符串的分隔符

java - 我的应用程序每次加载时都会停止

java - 无法使用 Firebase 云消息传递发送通知

java - 如何检查 Java 中的 firebase 任务是否完成?

firebase - 如何发出 firestore REST API PATCH 请求?

java - JSP 文件输出在更改后未更新 [Eclipse 内部 Web 浏览器问题]

java - 找不到 bean : “studentList” in any scope

android - 应用程序到 Web API 产生 400 无效的主机名

android - NetworkImageView 类转换异常