firebase - 通过 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 的事件。
解决方案
尝试这个 :
printPath() async {
StorageReference ref =
FirebaseStorage.instance.ref().child('example/audio abc.mp3');
String url = (await ref.getDownloadURL()).toString();
print('Urlllllllllllllll $url');
}
上面的代码工作正常。请参阅下面的屏幕截图以获取参考;
推荐阅读
- google-bigquery - Bigquery 中 UTC 的 2 个日期时间之间的差异
- amazon-web-services - 错误:ffmpeg 在 AWS Lambda 上以代码 1 退出
- java - Spring的ThreadPoolTaskExecutor的工作
- php - 单击搜索按钮后,视图中的分页功能以 JSON 格式返回所有数据
- javascript - 反应材料表导出按钮未正确查看
- javascript - Firebase 读取安全规则
- google-cloud-platform - Google BigQuery ML 是否会自动使时间序列数据保持静止?
- python-3.x - Heroku 的数据库连接错误:将 Web 应用程序连接到 Postgresql
- c++ - C++ 中的高效循环缓冲区,将传递给 C 风格的数组函数参数
- angular - 在服务器端运行 Angular 应用程序