#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.
Вместо этого вы, вероятно, просто захотите:
- Получите обычный экземпляр FirebaseStorage с помощью
getInstance()
без параметров. - Вызовите storage.getReferenceFromUrl() и передайте полный URL-адрес gs, чтобы получить StorageRefence, который указывает на этот файл
Комментарии:
1. На случай, если кто-нибудь наткнулся на этот вопрос из javascript land, по какой-то причине имя функции отличается. Вместо этого это будет
storage.refFromURL()
.