在FirebaseStorage中控制用户图像

问题描述 投票:0回答:1

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

Activity where users add photos

我正在使用用户的唯一ID命名照片。因此,例如,将用户的照片命名为:userid_1.jpg,userid_2.jpg,userid_3.jpg

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

例如,用户有三张照片并删除了第一张,因此现在photo2移到photo1的位置,而photo3占据photo2的位置。这样我就可以轻松地在活动中获得这种效果:

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

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

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

然后我想做的就是重命名其余两张图片。

因此,删除照片1后,userid_1.jpg掉落了,userid_2.jpg变成了userid_1.jpg,userid_3.jpg变成了userid_2.jpg

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

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

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

java android firebase firebase-storage
1个回答
0
投票

云存储在维护上传到其上的对象的顺序方面不是很好。甚至不是大多数普通的计算机文件系统都适合此。

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

© www.soinside.com 2019 - 2024. All rights reserved.