2017-07-04 69 views
0

我能夠將圖像保存到我的Firebase存儲中,但在存儲中,沒有任何內容可以告訴我上傳照片的用戶的ID。在我的應用程序中,用戶可以上傳照片作爲博客,儘可能多地更新每張照片應該分別具有用戶的ID和博客的關鍵。因此,我很容易分別爲每個博客獲取圖像。我怎樣才能做到這一點?使用身份驗證ID將圖像存儲在Firebase中 - Xamarin

這是我如何保存我的圖片

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

您可以使用用戶的Uid創建爲每個用戶在存儲的參考。

我假設你storageRefStorageReference images = storageRef.Child("images");意味着FirebaseStorage.Instance.Reference,那麼首先檢查當前用戶是這樣的:

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

如果用戶是空的,當然我們需要進行身份驗證,但如果它不爲空,創建用戶參考,然後根據此參考創建您的「圖像」或「博客」等...例如:

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

var userRef = storageRef.Child(user.Uid); 
var imageRef = userRef.Child("images");