首页 > 解决方案 > 通过 Flutter 获取 Firebase 存储中已存储文件的 URL

问题描述

我目前正在尝试从 Firebase 存储访问文件的 URL,而无需登录 Firebase 控制台并手动获取 URL。我正在开发一个能够获取该 URL 并将其存储为字符串的应用程序。

在通过 Flutter 执行此操作时,我遇到了很多困难,我尝试搜索 SO 以寻找以编程方式获取 URL 的方法。

到目前为止,我已经尝试了一种看起来可行的方法,但它实际上并没有执行我打算让它完成的任务。

void getDownloadUrl(String audioName) {
    FirebaseStorage firebaseStorage = FirebaseStorage.instance;
    StorageReference songRef = firebaseStorage.ref().child('$audioName');
    songRef.getMetadata().then(
        (_) => print('successfully accessed firebase storage child'),
        onError: (_) =>
            print("Wasn't able to access metadata from " + songRef.path));
    String audioString;
    songRef
        .getDownloadURL()
        .then((_) => audioString = songRef.getDownloadURL().toString());
    String audioPath;
    if (firebaseStorage != null) {
      audioPath = firebaseStorage.ref().child('$audioName').path;
    } else {
      print('songNameString is null. Check $audioPath');
    }
}

这是我尝试过的一种方法,但仍然不成功。

有人可以解释访问 Firebase 存储的最佳做法,搜索文件夹,获取文件并访问可以存储以供以后使用的所需 URL,因为这是我本节的主要目标?

我还打开了对 Firebase 存储的读/写访问权限。

需要明确的是 - 我不是通过应用程序上传文件。所以我认为我不能调用在上传时返回 URL 的事件。

标签: firebaseflutterdartfirebase-storage

解决方案


尝试这个 :

 printPath() async {
StorageReference ref =
FirebaseStorage.instance.ref().child('example/audio abc.mp3');
String url = (await ref.getDownloadURL()).toString();
print('Urlllllllllllllll $url');

}

上面的代码工作正常。请参阅下面的屏幕截图以获取参考;

点击这里查看图片


推荐阅读