【问题标题】:Controlling user images in FirebaseStorage控制 FirebaseStorage 中的用户图像
【发布时间】:2019-10-18 00:18:04
【问题描述】:

我正在使用 Firebase 在 Android 上制作社交应用。每个用户最多可以上传三个使用 FirebaseStorage 存储的图像。

Activity where users add photos

我使用用户的唯一 ID 来命名照片。所以例如一个用户的照片会被调用:userid_1.jpg, userid_2.jpg, userid_3.jpg

我使用第一张图片作为用户的个人资料图片。这一切都很好,但我想允许用户删除照片并添加新照片。

例如,用户有三张照片并删除了第一张,所以现在 photo2 移动到 photo1 的位置,而 photo3 占据了 photo2 的位置。所以我可以很容易地在activity中得到这个效果:

photo1ImageView.setImageDrawable(photo2ImageView.getDrawable());
photo2ImageView.setImageDrawable(photo3ImageView.getDrawable());
photo3ImageView.setImageResource(R.drawable.addphotoicon);

但现在的问题是如何在 FirebaseStorage 中处理这个问题。所以很明显我从删除图片开始。

FirebaseStorage.getInstance().getReference().child("images").child(userID + "_1.jpg").delete();

然后我想做的是重命名剩下的两张图片。

所以删除photo1后,userid_1.jpg消失,userid_2.jpg变成userid_1.jpg,userid_3.jpg变成userid_2.jpg

但无法重命名 FirebaseStorage 中的文件。所以现在当这个 Activity 下次加载时,它会将 photo2 放在第二个 ImageView 中,将 photo3 放在第三个 ImageView 中,将第一个 ImageView 留空。个人资料图片 (userid_1.jpg) 也将丢失。这不是我想要的行为。

我想到的另一种方法是:每当删除一张照片时,我都会删除所有用户的照片,并以正确的名称重新上传剩余的照片,但这在 Firebase 上非常低效且不必要的使用。

我只是想知道是否有人能想到一种有效的方法来做到这一点。

【问题讨论】:

    标签: java android firebase firebase-storage


    【解决方案1】:

    云存储不太擅长维护上传到它的对象的顺序。甚至大多数普通的计算机文件系统都不适用于此。

    我建议放弃 Storage 将保持任何顺序或顺序的想法,并将该逻辑完全移动到数据库或其他数据存储中,让您能够轻松地在其中排序项目。上传到存储的文件的名称可以是随机的——它们不需要任何含义。您只需要将它们的路径存储在数据库中的相关记录中,并保持两者同步。

    【讨论】:

      【解决方案2】:

      您可以在这里应用一个小技巧。
      将您的用户照片参考作为对象数组存储到您的数据库中。为您的照片创建一个模型类。可以是这样的:

      class UserPhoto {
          var photoRef: String? = null //Reference of your photo in Cloud Storage
          var downloadUrl: String? = null //This is optional, but very handy.
          var timestamp: Long? = null // In milseconds
          var order: Int = -1
      }
      

      在这里你可以看到“时间戳”和“顺序”是确定照片是否是最新的关键。只需将此数据作为数组存储在用户文档中。每张照片都会有这个数据。然后,您可以根据每个用户照片的数据模型将您的逻辑放入您的应用程序/服务器中。

      【讨论】:

        猜你喜欢
        • 2021-06-11
        • 2020-08-03
        • 2023-03-19
        • 1970-01-01
        • 2020-01-29
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        • 2021-11-11
        相关资源
        最近更新 更多