2017-11-30 6 views
0

私のアプリの最初の部分では、ユーザは、ファイルがリストされている「一般」ビューにアップロードできます。私は各ファイル名とURLを特定のユーザーに割り当てます。その後、私はユーザーを並べ替え、すべてのファイル名を取得することができます。ファイルアップローダのUIDを取得する

また、データベースの別のフォルダにファイルをアップロードする実装も実装しました。別のフォルダでは、テーブルビューには「ファイル」と「フォルダ」があります。それはうまくいく。この機能では、特定のユーザーにfileNameとUrlを割り当てていません。ファイルはデータベース内の特定のフォルダに直接移動します(私は「一般」ビューにそれらを表示したくありません)。

ただし、削除機能が必要です。ファイルをアップロードしたユーザーのUIDのようなものを取得する方法はありますか(またはユーザーをリンクするために使用できるもの)ですか?私はカスタムメタデータを作成することができるFirebaseのドキュメントを読んでいますが、初心者です。私はそれについて手がかりがありません(カスタムメタデータの例は見つかりません)

答えて

1

ファイルをアップロードするとき、あなたはファイルをアップロードしましたが、コンテンツタイプやエンコーディングなどの通常のメタデータをすべて指定するためにStorageMetadataオブジェクトを作成することもできます。customMetadataという項目もあります。だから、あなたがそこにuserUIDを追加したい場合は、このようにそれを行うことができます:

let myMetadata = StorageMetadata() 
myMetadata.customMetadata = ["userUID" : "abc123"] 

あなたは、このメタデータオブジェクトを持っていたら、あなたのファイルのメタデータを更新するために、ストレージの参照を使用することができます。あなたは、あなたができるファイルのメタデータに添付userUIDを知る必要がある場合、後で

let fileReference = storageReference.child("files/userThumnail.jpg") 

fileReference.putData(imageData, metadata: myMetadata) { (metadata, error) in 
    //Handle error, etc. 
} 

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/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) 
    } 
} 
+0

私はそれが欲しいものです!私はそれを実装しようとします。あなたの指導に感謝します。 – misi06

+0

もう1つ質問があります。特定のURLのメタデータにアクセスする方法はありますか? – misi06

+0

'let fileReference = Storage.storage()。reference(forURL:" your_url ")'でファイルへの参照を取得できます。それから、 'fileReference.getMetadata ... 'とこれまでと同じです。 – creeperspeak

関連する問題