Firebase存储 - 管理图片网址

时间:2017-12-17 03:08:49

标签: android firebase-storage

我正在开发一款用于拍照的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();
    }
});

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

现在如果他以后更改了个人资料图片,我有以下2个选项

  1. 更新每个数据库条目 - 非常繁琐,强力和资源密集型
  2. 覆盖原始个人资料图片 - 更容易,但我无法弄清楚如何。原因是,即使是相同的文件名,Firebase存储也会为每次下载生成一个新的URL,从而违背了本练习的目的。
  3. 那么有更好的方法将图片上传到Firebase存储并生成静态的网址吗?

    这种依赖的原因是我使用Picasso和Glide加载图像,我需要网址是静态的。

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

1 个答案:

答案 0 :(得分:0)

我最终决定完全取消这些网址。带有前缀gs://的Google存储空间是静态的。并且只能从应用内访问。因此,我决定使用this tutorial

的指导为RequestHandler uri编写自定义gs://

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