swift - 如何从 Firebase 存储下载 URL 中删除查询字符串

标签 swift firebase firebase-storage firebase-security

问题:

我需要能够从为 Firebase 存储中的图像生成的下载网址中删除所有链接装饰。 但是,当所有链接修饰被剥离时,生成的链接当前将返回图像元数据的 JSON 文档。

上下文:

流程如下:

图像已从 iOS 应用上传到 Firebase。完成后,下载 URL 将通过 POST 请求发送到外部服务器。

提交图像 URL 时,URL 发送到的服务器不接受链接修饰。

目标:

更改 Firebase 存储下载 URL,例如删除所有链接修饰,如下所示:

注释:

问题实际上是双重的,首先需要操作链接以删除所有链接装饰。然后,链接的行为需要更改,因为为了返回图像,您需要在文件扩展名后面加上 ?alt=media,在本例中为 .jpg。目前,如果没有链接装饰,使用具有我所需结构的链接将返回元数据的 JSON 文档。

当前链接结构如下:

所需的链接结构:

token 对于访问图像是必需的,具体取决于适当的安全规则,但可以通过适当的读取权限来忽略。我可以根据需要调整规则,但我仍然需要能够删除 ?alt=media 并仍然返回图像。

最佳答案

根据 Frank 的回答,如果您访问关联的 Google Cloud Platform 项目,在“存储”选项卡中找到该存储桶并将该存储桶设为公开,您将能够从此处获取具有所需格式的图像。也就是说,您将无法通过 Firebase 进行访问

https://firebasestorage.googleapis.com/v0/b/example.appspot.com/o/[FOLDER_NAME]%[IMAGE_NAME].jpg

但通过 Google Cloud Storage,链接如下

https://storage.googleapis.com/[bucket_name]/[path_to_image]

进入 GCP 项目控制台后,使用与 Firebase 项目中的名称相同的名称访问存储桶。他们是同一个桶。然后通过关注 these steps 将存储桶公开。之后,您将能够按照上面提到的方式构建链接,并且无需 token 和 alt=media 参数即可访问它们。如果您不想向所有人公开,您可以根据需要随意调整权限。

关于swift - 如何从 Firebase 存储下载 URL 中删除查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422613/

相关文章:

ios - 为什么我不能让设备通过 Game Center Multiplayer 连接在一起?

reactjs - Firebase 存储 "Permission denied"错误

android - 使用 Picasso 从 Firebase Storage 加载图像到 Infowindow 中的 ImageView,Picasso 只显示占位符

ios - Firebase 存储图像不会附加到阵列

javascript - 未捕获的 TypeError : firebase. 存储不是函数

ios - 根据来自后端的数据为 UITableView 中的部分设置数据源

ios - SWRevealViewController 无法在 iPad 上运行

java - Android Firebase 查询问题

javascript - 在 Firebase 中迭代多个子项

ios - DNS Ubiquiti Identity DidChangeNotification 不会通过 cloudkit 触发