firebase - 如何从 Firebase 存储下载 url 中获取谷歌云存储公共 url?
问题描述
在我们的系统中,用户使用我们的移动应用程序将他们的图像上传到firebase存储,它是谷歌云存储桶的包装器,移动应用程序使用这个库进行上传,然后使用getDownloadUrl
方法(在链接中描述)生成下载链接如下:
然后它将 URL 发送到我们的 BE 以存储链接。
Firebase 存储链接的下载时间比直接从谷歌云存储链接下载完全相同的图像要长得多,这可以从以下链接模板 https://storage.googleapis.com/{BUCKET_NAME}/{PARENT_FOLDER}生成/{IMAGE_NAME}。
由于 GCP 链接更快(根据我们自己的基准测试),因此我们需要一种方法将 firebase 链接映射到其在 GCP 存储中的对应部分以提高下载性能。
上述进行映射的解决方案适用于 GCP 存储桶中公开可用的任何图像,但是,如果图像不公开可用,则可以使用 firebase 链接访问它(可能是因为它在链接中有令牌) ,但我们无法使用 GCP 链接访问它,它会给出以下错误:
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.</Details>
</Error>
我的问题是:我们如何从 GCP 存储链接访问图像,即使它不是公开的,由于安全原因我们不能公开所有图像?
解决方案
推荐阅读
- python - 如何将 Pandas DataFrame 中的多个日期列合并为一列?
- r - cor()函数的R结果
- javascript - 一段时间后,Javascript setInterval“崩溃”?
- google-cloud-platform - gcp cloud shell 安装节点包出现空间不足错误
- python - 即使使用 Spyder 安装,也没有名为“folium”的模块
- javascript - Array() 构造函数中的 push 函数将其添加到所有元素
- websocket - NestJS websocket 客户端消息监听器
- github-pages - 如何设置 GitHub Pages root 重定向到 index.html 而不是 404?
- validation - 升级到 laravel 7 后验证中的空白屏幕
- python-3.x - 如何重塑数据框?