gpt4 book ai didi

android - Firebase 存储 URL 随新 token 不断变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:48 25 4
gpt4 key购买 nike

我正在尝试使用 firebase 数据库和存储构建社交媒体应用程序。以下是预期的流程。

  1. 用户上传存储在当前用户文件夹中的 firebase 存储中的个人资料图片和存储在 firebase 数据库中以便快速访问的 URL。 (工作正常)

  2. 用户发表他们的想法。这会在数据库中保存用户信息,例如帖子消息、用户名和个人资料图像 URL。 (工作正常)。

问题

现在的问题是假设用户更新了他或她的个人资料图片,这会覆盖 firebase 存储中的旧个人资料图片(为了管理存储并使用户图片在所有评论和帖子中都相同)。在发布消息 Activity 中,无法访问旧的个人资料图像 URL,导致 token 已更改。

问题

我想知道如何解决这个问题,以便 firebase 存储 URL 在所有更新中都是静态的(即相同的)。

注意

使用 Picasso 而不是 firebase 方法获取图像

最佳答案

虽然这个问题已经问了很长时间了,但我注意到有些人仍然觉得很难解决这个问题,所以我将在下面提供我的解决方案。

第 1 步由于存储 URL 在更改时始终是动态的(即拥有 token ),我所做的是对存储的图像文件使用通用名称,例如对所有用户说 avatar

第 2 步在storage中为每个用户创建一个目录如下:users/{uid}/avatar.jpg

第 3 步使用步骤2中的路径拉取或显示图片(如下)

安卓

StorageReference storageReference = FirebaseStorage.getInstance().getReference("users").child(userId).child("avatar.jpg");

Glide.with(context).using(new FirebaseImageLoader()).load(storageReference).diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.ch_white_icon).placeholder(R.drawable.ch_white_icon).into(imageView);

网页

var storage = firebase.storage();
var pathReference = storage.ref('users/' + userId + '/avatar.jpg');
pathReference.getDownloadURL().then(function (url) {
$("#large-avatar").attr('src', url);
}).catch(function (error) {
// Handle any errors
});

有了这个,您就不必再担心动态链接了,无论何时您将新图片上传到上述路径,它都会覆盖之前的图片,并且第 3 步中的代码将为您提供新图片。

PS: 对于 Android 不要忘记将 DiskCacheStrategy.ALL 更改为 DiskCacheStrategy.NONE 如果您不想滑动缓存图像,或者如果允许缓存,您可以使用时间戳获取新图像.

关于android - Firebase 存储 URL 随新 token 不断变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46094676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com