Firebase 存储中的文件夹不会被删除? [复制]
Posted
技术标签:
【中文标题】Firebase 存储中的文件夹不会被删除? [复制]【英文标题】:Folder in Firebase storage does not get deleted? [duplicate] 【发布时间】:2019-05-17 03:18:48 【问题描述】:我正在尝试删除 firebase 存储文件夹中的内容:
我尝试使用以下功能:
let storageRef = Storage.storage().reference().child((Auth.auth().currentUser?.uid)!).child("post:\(selectedPost.media[0].postID!)/")
// let postRef = storageRef.child("image.png")
// Delete the file
storageRef.delete error in
if error != nil
// Uh-oh, an error occurred!
print("FAIL DELETING POST FROM STORAGE")
else
// File deleted successfully
print("SUCCESS DELETING STORAGE REF TO POST!")
问题是它不这样做。它打印失败:
Optional(Error Domain=FIRStorageErrorDomain Code=-13010 "Object LWzvQXAoX3Ov9DW9LopWFFjJBJY2/post:579755726 does not exist." UserInfo=object=LWzvQXAoX3Ov9DW9LopWFFjJBJY2/post:579755726, ResponseBody=
"error":
"code": 404,
"message": "Not Found. Could not delete object",
"status": "DELETE_OBJECT"
检查存储时,我可以清楚地看到该文件夹确实存在。
怎么了?
【问题讨论】:
也许您需要指定该存储的项目? @jhnferraris 我不确定你的意思。 Firebase 存储已分配给特定的“Firebase 项目”。我不确定 Firebase Swift SDK 是否仍需要在开始访问之前指定项目。 【参考方案1】:Firestore 客户端 SDK 不提供删除整个文件夹的操作。
实际上,Cloud Storage 中实际上并没有任何“文件夹”。只有object names 看起来像是包含文件夹。这只是为了帮助您组织内容,因此您不必在控制台中查看整个文件列表。
您要做的是将文件的所有名称存储在其他位置,例如数据库,然后在需要删除它们时查询数据库以获取名称。或者,您可以使用 gsutil 手动删除整组文件。在 SDK 提供列表 API 允许您列出具有公共前缀的对象之前,您将无法从移动客户端执行此操作。 Firebase 团队正在为此努力,但目前没有时间表。
【讨论】:
据我所知 [***.com/questions/23900943/… gsuit 用于命令行。我当然不能每次用户删除内容时都这样做。这是否意味着我必须选择你提到的第一个选项?您能否根据我提供的代码显示一个关于如何循环的小片段 *工作............ 我无法向您展示任何代码,因为我不知道您打算如何存储所有对象的名称。你必须自己弄清楚。以上是关于Firebase 存储中的文件夹不会被删除? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
卸载应用程序时,内部存储“getFilesDir()”中的文件不会被删除
如何从 Firebase 存储下载 URL 中删除查询字符串