通过Flutter获取指向Firebase存储中已存储文件的URL

时间:2019-12-01 18:28:26

标签: firebase flutter dart firebase-storage

我目前正尝试从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的事件。

1 个答案:

答案 0 :(得分:0)

尝试一下:

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

}

上面的代码工作正常。请参阅下面的Screeenshot以获取参考;

Click Here to see the Image