获取文件上传器的UID

时间:2017-11-30 21:54:49

标签: ios swift firebase firebase-storage

在我的应用的第一部分,用户可以将文件上传到列出它们的“常规”视图。我将每个fileName和URL分配给特定用户。然后我可以对用户进行排序并获取所有文件名。

我还实现了将文件上传到我数据库中的不同文件夹。通过不同的文件夹,我的意思是在表格视图中有“文件”和“文件夹”。它运作良好。使用此功能,我不会将fileName和Url分配给特定用户。文件直接转到数据库中的特定文件夹(我不希望我的“常规”视图显示它们)。

但是,需要删除功能。有没有办法找出像上传文件的用户的UID(或者我可以用来链接用户的任何其他内容)?我在firebase文档中读到我可以创建自定义元数据,但我是初学者,我对它没有任何线索(另外,我找不到自定义元数据的任何示例)

1 个答案:

答案 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)
  }
}