在我的应用的第一部分,用户可以将文件上传到列出它们的“常规”视图。我将每个fileName和URL分配给特定用户。然后我可以对用户进行排序并获取所有文件名。
我还实现了将文件上传到我数据库中的不同文件夹。通过不同的文件夹,我的意思是在表格视图中有“文件”和“文件夹”。它运作良好。使用此功能,我不会将fileName和Url分配给特定用户。文件直接转到数据库中的特定文件夹(我不希望我的“常规”视图显示它们)。
但是,需要删除功能。有没有办法找出像上传文件的用户的UID(或者我可以用来链接用户的任何其他内容)?我在firebase文档中读到我可以创建自定义元数据,但我是初学者,我对它没有任何线索(另外,我找不到自定义元数据的任何示例)
答案 0 :(得分:1)
当您上传文件时,或者在上传文件后,您可以创建一个StorageMetadata
对象来指定您期望的所有常用元数据,例如contentType和encoding等。他们还给你一个名为customMetadata
的项目,它是一个包含你想要的任何字典。因此,如果您想在其中添加userUID,可以这样做:
let myMetadata = StorageMetadata()
myMetadata.customMetadata = ["userUID" : "abc123"]
获得此元数据对象后,您可以使用存储引用更新文件中的元数据。
let fileReference = storageReference.child("files/userImage.jpg")
fileReference.updateMetadata(metadata) { (metadata, error) in
//Check to see if you need to handle an error, etc.
}
您也可以在上传文件时执行此操作:
let fileReference = storageReference.child("files/userThumnail.jpg")
fileReference.putData(imageData, metadata: myMetadata) { (metadata, error) in
//Handle error, etc.
}
稍后,如果您需要知道附加到文件元数据的userUID,您可以像这样访问它:
let fileReference = storageReference.child("files/userImage.jpg")
fileReference.getMetadata { (metadata, error) in
if let data = metadata, let userUID = data.customMetadata["userUID"] as? String {
//Got it. Do whatever you need with it.
print(userUID)
}
}