Создание ссылки на хранилище firebase из URL-адреса «gs» в строковом формате

#firebase #kotlin #firebase-storage

#firebase #kotlin #firebase-хранилище

Вопрос:

Я сохранил firebase StorageReference внутри базы данных Firebase, преобразовав саму ссылку в строку, и я получаю приведенную ниже ошибку при попытке использовать метод «.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 gmail.com/Posts/d1dad470-25ad-3ffb-q422-22cca5e5596o

То, как я пытался создать ссылку на хранилище из пути gs : var refurl = FirebaseStorage.getInstance(listset.refslist[i]!!).reference

следует отметить несколько моментов о том, как я пытался создать ссылку на хранилище из пути gs: Объект listset содержит изменяемый список путей gs, который refslist , i является Int.

Я видел похожие на мои вопросы, но ни один из них не подходит для моего использования.

Редактировать: я пытался использовать метод getReferencefromurl , который возвращает ошибку: java.lang.Исключение IllegalArgumentException: не удалось проанализировать Uri хранилища.

URL-адрес внутри базы данных существует на 100%.

Ответ №1:

FirebaseStorage.getInstance(String) используется для создания экземпляра объекта FirebaseStorage для корзины, указанной в качестве аргумента. В сообщении об ошибке сообщается, что URL-адрес gs не может содержать компонент path (только имя корзины). Это не для преобразования путей к файлам gs.

Вместо этого вы, вероятно, просто захотите:

  1. Получите обычный экземпляр FirebaseStorage с помощью getInstance() без параметров.
  2. Вызовите storage.getReferenceFromUrl() и передайте полный URL-адрес gs, чтобы получить StorageRefence, который указывает на этот файл

Комментарии:

1. На случай, если кто-нибудь наткнулся на этот вопрос из javascript land, по какой-то причине имя функции отличается. Вместо этого это будет storage.refFromURL() .