使用身份验证ID-Xamarin在Firebase中存储图像

时间:2017-07-04 06:45:58

标签: c# android firebase xamarin.android firebase-storage

我可以将图像保存到我的firebase存储中,但是在存储中,没有什么可以告诉我上传照片的用户的ID。在我的应用程序中,用户可以上传博客照片,并且就此而言,更新的每张照片应分别具有用户的ID和博客的密钥。因此,我很容易分别为每个博客获取图像。我怎样才能实现这一目标?

这是我保存图像的方式

 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 个答案:

答案 0 :(得分:0)

您可以使用用户Uid为每位用户创建存储空间参考。

我认为storageRef中的StorageReference images = storageRef.Child("images");表示FirebaseStorage.Instance.Reference,然后首先检查当前用户是这样的:

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

如果user为null,我们当然需要进行身份验证,但如果它不为null,则先创建一个用户引用,然后在此引用下创建" images"或者"博客"等等......例如:

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

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