如何从flutter中firebase存储中存在的文件的url获取文件名?

问题描述 投票:0回答:2

我创建了一个按钮来从 firestore 获取的 URL 下载文件,我也需要文件名,有什么方法可以使用我获取的 URL 引用文件吗? 我看到了类似问题的答案,但找不到正确的解决方案。

这是我得到的URL的类型

https://firebasestorage.googleapis.com/v0/b/student-app.appspot.com/o/img%2FFileName.pdf?alt=media&token=367f598b-425d-4ce0-be2b-804d2103d69e

有什么方法可以从中提取文件名吗?或者有什么参考方法吗?

firebase flutter firebase-storage
2个回答
8
投票

如果您没有对文件的引用,那么您将不得不使用正则表达式:

String getFileName(String url) {
  RegExp regExp = new RegExp(r'.+(\/|%2F)(.+)\?.+'); 
  //This Regex won't work if you remove ?alt...token
  var matches = regExp.allMatches(url);

  var match = matches.elementAt(0);
  print("${Uri.decodeFull(match.group(2)!)}");
  return Uri.decodeFull(match.group(2)!);
}

0
投票

有一个简单的解决方案: 我们假设来自 fireStore 的 url :

final urlExample = https://firebasestorage.googleapis.com/v0/b/example.appspot.com/o/example_images%2F12345%2Fexample.jpg?alt=media&token=3ae5accd-ebdc-4fab-a08e-d8d57059614c

String getFileName(String url) {
 Uri uri = Uri.parse(url);
 String fileName = uri.pathSegments.last.split("/").last;
return fileName;
}
final fileNameFromUrl = getFileName(urlExample);
print(fileNameFromUrl); // example.jpg
© www.soinside.com 2019 - 2024. All rights reserved.