2017-07-04 7 views
0

イメージをFirebaseストレージに保存できますが、ストレージには写真をアップロードしたユーザーのIDを教えてもらえません。私のアプリでは、ユーザーはブログ用の写真をアップロードすることができます。更新されたすべての写真は、ユーザーのIDとブログのキーをそれぞれ持っている必要があります。だから、私はそれぞれのブログごとに画像を取り出すのは簡単だろう。どうすればこれを達成できますか?認証ID-XamarinでイメージをFirebaseに保存する

これは、私はあなたが各ユーザーのストレージ内の参照を作成するために、ユーザーのUidを使用することができます

public void OnClick(View v) 
     { 
      Intent intent = new Intent(); 
      intent.SetType("image/*"); 
      intent.SetAction(Intent.ActionPick); 
      StartActivityForResult(Intent.CreateChooser(intent, "Select Image"), PICK_IMAGE_REQUEST); 

     } 

     protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) 
     { 
      base.OnActivityResult(requestCode, resultCode, data); 

      try{ 
       Bitmap bitmap = MediaStore.Images.Media.GetBitmap(this.ContentResolver, data.Data); 
       using (MemoryStream stream = new MemoryStream()) 
       { 
        bitmap.Compress(Bitmap.CompressFormat.Jpeg,100,stream); 
        byte[] array = stream.ToArray(); 

        imageViewDrop.SetImageBitmap(bitmap); 


       } 

       if(data.Data != null){ 
        pd = new ProgressDialog(this); 
        pd.SetTitle("Uploading"); 
        pd.Show(); 

        StorageReference images = storageRef.Child("images"); 

        images.PutFile(data.Data).AddOnSuccessListener(this); 
        images.PutFile(data.Data).AddOnProgressListener(this); 
       } 


       else { 

       } 


       imageViewDrop.SetImageBitmap(bitmap); 

      } 
      catch (Java.Lang.Exception e){ 

      } 


     } 


     public void OnSuccess(Java.Lang.Object result) 
     { 
      pd.Dismiss(); 
     } 

     public void OnProgress(Java.Lang.Object snapshot) 
     { 

     } 

答えて

1

私の画像を保存する方法です。

私はStorageReference images = storageRef.Child("images");であなたのstorageRefFirebaseStorage.Instance.Referenceを意味し、まず、このような現在のユーザーチェック前提としています。ユーザーがnullの場合

FirebaseAuth mAuth = FirebaseAuth.Instance; 
FirebaseUser user = mAuth.CurrentUser; 

を、もちろん我々が認証する必要があり、それがnullでない場合、作成最初にこのリファレンスの下にあるユーザー参照は、「画像」や「ブログ」などを作成します。たとえば、

FirebaseStorage storage = FirebaseStorage.Instance; 
//create child reference 
StorageReference storageRef = storage.Reference; 

var userRef = storageRef.Child(user.Uid); 
var imageRef = userRef.Child("images"); 
関連する問題