首页 > 解决方案 > 从字符串格式的“gs”url创建firebase存储引用

问题描述

通过将引用本身转换为字符串,我在 Firebase 数据库中存储了一个StorageReferencefirebase,当尝试使用“.getInstance”方法从其字符串版本重新创建引用时,出现以下错误。

错误:java.lang.IllegalArgumentException: The storage Uri cannot contain a path element.

存储引用本身(已转换为字符串):val personalstorageref = FirebaseStorage.getInstance().getReference().child("${auth.currentUser!!.email}/Posts/${filename}")

数据库内部的存储引用字符串版本:gs://stnok-25330.appspot.com/hell%20gmail.com/Posts/d1dad470-25ad-3ffb-q422-22cca5e5596o

我尝试从 gs 路径创建存储引用的方式:var refurl = FirebaseStorage.getInstance(listset.refslist[i]!!).reference

关于我尝试从 gs 路径创建存储引用的方式需要注意的几件事:该对象listset包含一个可变的 gs 路径列表,它refslisti一个 Int。

我见过与我类似的问题,但没有一个适合我的用例。

编辑: 我尝试使用 getReferencefromurl 方法,它返回错误:java.lang.IllegalArgumentException:无法解析存储 Uri。

数据库内部的 url 存在 100%。

标签: firebasekotlinfirebase-storage

解决方案


FirebaseStorage.getInstance(String)用于为作为参数给出的存储桶构造 FirebaseStorage 对象实例。错误消息告诉您 gs URL 不能有路径组件(只有存储桶名称)。它不是用于转换 gs 文件路径。

相反,您可能只想:

  1. getInstance()使用不带参数的普通 FirebaseStorage 实例。
  2. 调用storage.getReferenceFromUrl()并传递完整的 gs URL 以获取指向该文件的 StorageReference

推荐阅读