我目前正尝试从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的事件。
答案 0 :(得分:0)
尝试一下:
printPath() async {
StorageReference ref =
FirebaseStorage.instance.ref().child('example/audio abc.mp3');
String url = (await ref.getDownloadURL()).toString();
print('Urlllllllllllllll $url');
}
上面的代码工作正常。请参阅下面的Screeenshot以获取参考;