gpt4 book ai didi

firebase - 如何在具有已知路径的 firebase 存储中获取图片的可重用 url?

转载 作者:行者123 更新时间:2023-12-05 05:43:55 25 4
gpt4 key购买 nike

我在此路径中上传我所有用户的个人资料照片:

    const userUploadRef = ref(
storage,
`profilePhotos/${user.data?.uid}`
);

我目前访问的 url 是这样的:

  getDownloadURL(uploadTask.snapshot.ref).then(async (downloadUrl) => {
if (user.data?.uid) {
setDownloadURL(downloadUrl);

然而,我才意识到即使路径总是相同的,每张图片都有不同的 url?

这会导致大量问题 - 如果我想将此用户照片附加到评论、帖子或任何其他内容中,我将必须确保更新用户个人资料图像 url。

肯定有一种方法可以重复使用相同的 url,因为用户个人资料照片的路径总是相同的,无论如何?

编辑:

我已尝试遵循本指南 - https://www.sentinelstand.com/article/guide-to-firebase-storage-download-urls-tokens关于如何删除 token 并公开我的文件,但无论如何 firebase 都会继续添加 token 。

        if (folder == "profilePhotos" && isThumbnail) {
const [newFile]: any = file.makePublic();
const [metadata] = newFile.getMetadata();
const url = metadata.mediaLink;

const userPublicRef = db.collection("usersPublic").doc(userId);
const usersPrivateRef = db.collection("users").doc(userId);

最佳答案

如果照片是公开的,一旦您将它们上传到 Firebase 存储,只要不传递下载 token 即可实现您想要的效果(这不是 Firebase 支持的用途)。

下载的 URL 将采用以下格式 firebasestorage.googleapis.com/XXX?alt=media&token=YYY 并且正在更改的部分是生成的 token ,如果安全,您可以删除它规则允许匿名访问。

这是一个很好的website这可以帮助你。

第一版答案:

这些是我在 Firebase 存储中使用的规则:

rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read: if true;
allow write: if false;
}
}
}

通过使用这些规则, token 不再需要,任何人都可以访问,但您仍然需要手动从 URL 中删除 token

例如,这是带有 token 的完整 URL:

https://firebasestorage.googleapis.com/v0/b/my-firebase-application-92719.appspot.com/o/istockphoto-496152924-612x612.jpg?alt=media&token=960c993e-dc2b- 483f-ae30-5c4eeb8c1e73

你需要在 &token 之后删除你会得到:

https://firebasestorage.googleapis.com/v0/b/my-firebase-application-92719.appspot.com/o/istockphoto-496152924-612x612.jpg?alt=media

现在我可以访问图片而不需要我创建的测试图片的 token :

https://firebasestorage.googleapis.com/v0/b/my-firebase-application-92719.appspot.com/o/istockphoto-496152924-612x612.jpg?alt=media

我想强调的是,这不是推荐的安全设置,因为现在任何人都可以访问 URL 中的所有内容。

关于firebase - 如何在具有已知路径的 firebase 存储中获取图片的可重用 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71718289/

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