Firebase 存储中的文件夹不会被删除?

1 ios firebase swift firebase-storage

我正在尝试删除 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!")
            }
        }
Run Code Online (Sandbox Code Playgroud)

问题是它没有这样做。它打印失败:

    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"
  }
}
Run Code Online (Sandbox Code Playgroud)

检查存储时,我可以清楚地看到该文件夹​​确实存在。

怎么了?

Dou*_*son 5

Firestore 客户端 SDK 不提供删除整个文件夹的操作。

事实上,云存储中实际上并不存在任何“文件夹”。只是对象名称看起来像是包含文件夹。这只是为了帮助您组织内容,这样您就不必在控制台中查看完整的文件列表。

您需要做的是将文件的所有名称存储在其他位置(例如数据库),然后在需要删除它们时查询数据库以获取名称。或者您可以使用 gsutil 手动删除整组文件。在 SDK 提供允许您列出具有公共前缀的对象的列表 API 之前,您将无法从移动客户端执行此操作。Firebase 团队正在努力解决此问题,但目前还没有时间表。