我创建了一个按钮来从 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
有什么方法可以从中提取文件名吗?或者有什么参考方法吗?
如果您没有对文件的引用,那么您将不得不使用正则表达式:
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)!);
}
有一个简单的解决方案: 我们假设来自 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