我是新来的颤栗,我正面临一个问题,是如何删除菲利还原照片。
我已经创建了一个子集合,在其中存储我的产品详细信息,该产品还包含一个存储在Firebase中的映像。如果删除我的产品,就像我有10个产品,但我想删除一个特定的产品,当我按删除按钮时,它正在删除我的产品,这是一个文档,但它没有从Firebase存储中删除相应的图像。
我尝试了一些方法,但它不起作用,它只是删除了我的云修复文档,但是照片仍然保存在Firestore中。
我正在使用图像URL来显示照片。我希望当我点击我的删除按钮时,它也会从Firebase中删除相应的图像。因此,我使用它来删除我的云修复文档。
TextButton(
onPressed: () async {
await FirebaseFirestore.instance
.collection('users')
.doc(LoginUser!.uid)
.collection('products')
.doc(document.id)
.delete()
.then((value) async {
//await FirebaseStorage.instance.ref().child('productImage').child('productImageUrl').delete();
print(
'Product Deleted But image is still there in Storage Folder');
});
},
child: Text('Delete')),
我使用这段代码在云修复中保存我的图像Url
final productImgRef = FirebaseStorage.instance
.ref()
.child('productImage')
.child(FirebaseUser.uid +time +'.jpg');
await productImgRef.putFile(pickImageFile!);
var productImageUrl = await productImgRef.getDownloadURL();
await FirebaseFirestore.instance
.collection('users')
.doc(FirebaseUser.uid)
.collection('products')
.add({
'productName': _productName,
'productDes': _productDes,
'bidPrice': _bidPrice,
'auctionDate': _auctionDate,
'submitBy': userName,
'productImageUrl': productImageUrl,
});
发布于 2021-11-06 23:32:39
假设这个注释行是您尝试过的:
await FirebaseStorage.instance.ref().child('productImage').child('productImageUrl').delete();
关于'productImageUrl'
的引号是错误的。使用这段代码,它尝试删除名为productImageUrl
的图像,这不是您的图像的名称。
最起码应该是:
await FirebaseStorage.instance.ref().child('productImage').child(productImageUrl).delete();
通过从productImageUrl
周围删除引号,代码将使用变量的值。
但更有可能的是,productImageUrl
包含一个下载URL,在这种情况下,您首先需要通过调用refFromURL
方法将其映射回存储Reference
:
var storageRef = FirebaseStorage.instance.refFromURL(productImageUrl);
await storageRef.delete();
https://stackoverflow.com/questions/69868149
复制相似问题