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

时间:2019-05-17 03:18:49

标签: ios swift firebase 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!")
            }
        }

问题在于它不这样做。它显示失败:

    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"
  }
}

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

怎么了?

1 个答案:

答案 0 :(得分:2)

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

实际上,Cloud Storage中实际上没有任何“文件夹”。仅object names包含文件夹。这只是为了帮助您组织内容,因此您不必在控制台中查看文件的整个列表。

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