【问题标题】:Firebase Storage - Manage image URLFirebase 存储 - 管理图片网址
【发布时间】:2018-05-30 19:36:26
【问题描述】:

我正在开发一款用于拍照的 Android 应用。首先,用户拍摄个人资料照片。此图像的 URL 保存在 Firebase 实时数据库中。下面是获取downloadUrl的示例代码

Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg"));
StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment());
uploadTask = riversRef.putFile(file);


uploadTask.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {

    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

        Uri downloadUrl = taskSnapshot.getDownloadUrl();
    }
});

此网址保存在数据库中的多个位置,我需要在其中加载用户的个人资料图片 - 他的每个帖子的条目、他在应用程序上给其他人的消息等。

现在如果他以后更改头像,我有以下两个选择

  1. 更新每个数据库条目 - 非常麻烦、蛮力和资源密集型
  2. 覆盖原始个人资料图片 - 更容易,但我不知道如何。原因是即使对于相同的文件名,Firebase 存储也会为每次下载生成一个新 URL,这违背了本练习的目的。

那么有没有更好的方法将图像上传到 Firebase 存储并生成静态 URL?

这种依赖的原因是我正在使用 Picasso 和 Glide 加载图像,并且我需要 url 是静态的。

欢迎开箱即用的想法,只要它们能以最少的努力解决我管理个人资料图片的问题。

【问题讨论】:

    标签: android firebase-storage


    【解决方案1】:

    我最终决定完全取消 URL。带有前缀 gs:// 的谷歌存储 Uri 是静态的。并且只能从应用程序内访问。所以我决定使用this tutorial 的指导为gs:// uri 编写一个自定义RequestHandler

    现在每次更新图片时,我都会覆盖原始文件,它会自动更新数据库中所有条目的所有链接的图像。

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2020-05-19
      • 2021-01-13
      • 2017-10-17
      • 2018-11-19
      • 1970-01-01
      相关资源
      最近更新 更多