【问题标题】:Getting UID of the file uploader获取文件上传者的 UID
【发布时间】:2017-11-30 21:54:48
【问题描述】:

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

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

但是,需要删除功能。有什么方法可以获取上传文件的用户的 UID(或我可以用来将用户链接到它的任何其他内容)?我在 firebase 文档中读到我可以创建自定义元数据,但我是初学者,对此我一无所知(另外,我找不到任何自定义元数据的示例)

【问题讨论】:

    标签: ios swift firebase firebase-storage


    【解决方案1】:

    当您上传文件时,或上传文件后,您可以创建一个StorageMetadata 对象来指定您期望的所有常用元数据,例如 contentType 和编码等。它们还为您提供一个名为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)
      }
    }
    

    【讨论】:

    • 我相信这就是我所需要的!我将尝试实施它。非常感谢您的指导。
    • 还有一个问题。有没有办法访问给定 URL 的元数据?
    • 当然。您可以使用let fileReference = Storage.storage().reference(forURL: "your_url") 获取对该文件的引用。然后和之前一样fileReference.getMetadata...
    猜你喜欢
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多