首页 > 解决方案 > 从 Firebase 存储中检索图像

问题描述

我正在尝试从 Firebase 存储中提取图像,这样我就可以使用图像的 URL 将其放入 Imageview 中。我找到的大多数答案都与 android studio 有关,xamarin 没有答案。这是我到目前为止的代码:

storage = FirebaseStorage.Instance;
storageRef = storage.GetReferenceFromUrl("gs://......com");

StorageReference ImageFolder = storageRef.Child("Images");
StorageReference UserFolder = ImageFolder.Child(auth.CurrentUser.Email);
StorageReference UserImage = storageRef.Child("profile pic");

我可以上传到firebase存储没问题,它的检索部分就是问题所在。在 Firebase 存储中,我有文件夹 Images/userEmail/profilePic。

任何有人可以指出我的方向或任何帮助的链接或文档将非常感谢。

标签: xamarin.androidfirebase-storage

解决方案


您可以实现IOnSuccessListener接口并在方法中得到结果,OnSuccess如下所示:

让您的活动实现IOnSuccessListener接口:

public class YourActivity: Activity, IOnSuccessListener, IOnFailureListener
 {
  ...
 }

使用下载文件并在回调Android.Gms.Tasks.Task中设置为 imageview :OnSuccess

StorageReference ImageFolder = storageRef.Child("Images");
StorageReference UserFolder = ImageFolder.Child(auth.CurrentUser.Email);
StorageReference UserImage = UserFolder.Child("profile pic");
StorageReference testRef = UserImage.Child("test.jpg");
Task downloadtask = testRef.GetBytes(1200 * 800);
downloadtask.AddOnSuccessListener(this);
downloadtask.AddOnFailureListener(this);

public void OnFailure(Java.Lang.Exception e)
 {
    Log.WriteLine(LogPriority.Debug, "storage", "Failed:" + e.ToString());
 }

public void OnSuccess(Java.Lang.Object result)
 {
    Log.WriteLine(LogPriority.Debug, "storage", "success!");
    if (downloadtask != null)
    {
        var data = downloadtask.Result.ToArray<byte>();
        Bitmap bitmap = BitmapFactory.DecodeByteArray(data, 0, data.Length);
        imageview.SetImageBitmap(bitmap);
        downloadtask = null;
    }
 }

有几种方法可以做到这一点
,你可以参考FireBase


推荐阅读