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 存储文件?

如何从 Firebase 存储下载 URL 中删除查询字符串

从 foreach 中删除单个图像(Firebase 存储)

从云功能中删除云存储中的文件

Firebase存储文件夹删除[重复]