Firebase Cloud Storage 下载网址与路径

问题描述 投票:0回答:3

我是 Firebase 存储新手,想知道最佳实践是什么。 我想将图像上传到 firebase 云存储,并返回一个下载 url,然后将其存储到 firestore。下载地址是永久的吗?其他用户将从 firestore 中读取以获取下载图像的 url。

但是当我想从CloudStorage删除图像时,我只有下载网址,但没有文件路径。那我删掉它吗?

如果我存储文件路径,如何获取下载网址?

firebase firebase-storage
3个回答
11
投票

下载地址是永久的吗?

下载 URL 将一直有效,直至您撤销它。

我只有下载网址,没有文件路径。那我要删掉吗?

您可以通过调用

StorageReference
(或您平台的同等功能)从下载 URL 获取 
FirebaseStorage.getReferenceFromUrl()

如果我存储文件路径,如何获取下载网址?

您可以使用

StorageReference
 为路径创建 
FirebaseStorage.getReference()
,然后调用
StorageReference.getDownloadUrl()


0
投票

我知道这是一篇旧文章,但这就是我在 Flutter 中使用的:

final Reference storageReferenceFromUrl = FirebaseStorage.instance.refFromURL(downloadPhotoPath!);
storageReferenceFromUrl.delete();

希望这有帮助。


0
投票

我花了一天时间重构整个项目,从保存下载 URL 转变为存储参考路径。想知道为什么吗?最初,我考虑的是:

  1. 避免同时存钱,因为这感觉多余且成本高昂。
  2. 考虑只保存下载 URL 是明智的,因为我的应用程序中只需要这个值,如果我需要引用,我可以调用 refFromUrl 方法。

但是,这种方法带来了一些问题:

  1. 目前(firebase_storage 版本 11.6.0),使用模拟器时 refFromUrl 方法存在问题。因此,在测试阶段不可能获得图像参考,这是一个重大问题。
  2. 下载链接是公共链接,存在安全问题。任何人都可以访问该链接并可能请求您的图像。 Firestore 缺乏设置缩放/下载限制的能力,这意味着如果有人决定过度请求您的图像,您最终会产生费用。仅存储参考并按需获取下载链接对我来说似乎是一个更安全的选择。
  3. 对我来说最重要的一点是速度,尤其是云功能。就我而言,我需要编辑存储在 Python Cloud Functions 中的图像,然后将结果图像写回到存储中。使用云函数中的下载链接获取图像需要 3000 毫秒,而使用引用直接从存储加载图像只需要 600 毫秒。

因此,我将整个项目转变为仅使用存储引用。我可以根据需要使用 getDownloadUrl() 检索应用程序中的下载链接,从而无需保存两者并节省内存。此外,更新单个值比管理两个值更简单。这些是我从下载 URL 切换到存储引用时的考虑因素。我希望这能为您提供一些见解! :)

© www.soinside.com 2019 - 2024. All rights reserved.