问题:
我需要能够从为 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/