我正在尝试删除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"
}
}
检入存储时,我可以清楚地看到该文件夹确实存在。
怎么了?
答案 0 :(得分:2)
Firestore客户端SDK不提供删除整个文件夹的操作。
实际上,Cloud Storage中实际上没有任何“文件夹”。仅object names包含文件夹。这只是为了帮助您组织内容,因此您不必在控制台中查看文件的整个列表。
您要做的是将文件的所有名称存储在其他位置,例如数据库,然后在需要删除它们时查询数据库以获取名称。或者,您可以使用gsutil手动删除整个文件集。在SDK提供列表API允许您使用通用前缀列出对象之前,您将无法通过移动客户端执行此操作。 Firebase团队正在研究此问题,但目前没有时间表。