如何从 URL 中删除 Firebase 存储文件
How do I delete a Firebase Storage file from URL
如何使用 URL 作为参考获取从 Firebase 存储中删除文件的按钮。 URL 是使用 Firebase Storage getDownloadUrl 方法从名为 "fileUrl" 的 Firestore 集合字段中检索的。
当我尝试删除时,我收到一条错误消息并且我的应用程序崩溃了。
代码:
onPressed: () async {
if (newsDataModel.get('fileUrl') != null) {
await FirebaseStorage.instance.refFromURL(newsDataModel.get('fileUrl')).delete();
} else {
return;
}
await newsDataModel.reference.delete().then((value) => Navigator.pop(context));
}
错误:
_AssertionError ('package:firebase_storage/src/firebase_storage.dart':
Failed assertion: line 112 pos 12: 'url.startsWith('gs://') || url.startsWith('http')':
'a url must start with 'gs://' or 'https://')
意识到我犯了一个错误。一些集合的 fileUrl 字段是 empty/null,所以我删除了具有空值的集合,因此返回了错误。
新的更新代码:
onPressed: () async {
try {
if (hwDataModel.get('fileUrl') != null) {
await FirebaseStorage.instance.refFromURL(hwDataModel.get('fileUrl')).delete()
.then((value) => {
hwDataModel.reference.delete().then((value) =>
Navigator.pop(context))});
} else if (hwDataModel.get('fileUrl') == null) {
await hwDataModel.reference.delete().then(
(value) => Navigator.pop(context));
};
} on FirebaseException catch (error) {
Fluttertoast.showToast(
msg: error.message.toString(),
gravity: ToastGravity.TOP,
backgroundColor: Colors.red,
textColor: Colors.white);
}
},
如何使用 URL 作为参考获取从 Firebase 存储中删除文件的按钮。 URL 是使用 Firebase Storage getDownloadUrl 方法从名为 "fileUrl" 的 Firestore 集合字段中检索的。 当我尝试删除时,我收到一条错误消息并且我的应用程序崩溃了。
代码:
onPressed: () async {
if (newsDataModel.get('fileUrl') != null) {
await FirebaseStorage.instance.refFromURL(newsDataModel.get('fileUrl')).delete();
} else {
return;
}
await newsDataModel.reference.delete().then((value) => Navigator.pop(context));
}
错误:
_AssertionError ('package:firebase_storage/src/firebase_storage.dart':
Failed assertion: line 112 pos 12: 'url.startsWith('gs://') || url.startsWith('http')':
'a url must start with 'gs://' or 'https://')
意识到我犯了一个错误。一些集合的 fileUrl 字段是 empty/null,所以我删除了具有空值的集合,因此返回了错误。
新的更新代码:
onPressed: () async {
try {
if (hwDataModel.get('fileUrl') != null) {
await FirebaseStorage.instance.refFromURL(hwDataModel.get('fileUrl')).delete()
.then((value) => {
hwDataModel.reference.delete().then((value) =>
Navigator.pop(context))});
} else if (hwDataModel.get('fileUrl') == null) {
await hwDataModel.reference.delete().then(
(value) => Navigator.pop(context));
};
} on FirebaseException catch (error) {
Fluttertoast.showToast(
msg: error.message.toString(),
gravity: ToastGravity.TOP,
backgroundColor: Colors.red,
textColor: Colors.white);
}
},