我现在已经找了一段时间,但找不到我需要的东西。 所以我在我的应用程序中使用Firestore,正如您所看到的,我在数据库中有一个包含字符串和引用的对象。 我像这样访问字符串:
String descriptionEx1 = (String) exI.get("description");
要访问图像参考,我使用了:
StorageReference gsReference = (StorageReference) exI.get("image");
然后我想我将图像下载到位图:
final long ONE_MEGABYTE = 1024 * 1024;
storRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
// Data for "images/island.jpg" is returns, use this as needed
//ImageView img = (ImageView)findViewById(R.id.imgEx1);
img = (int) ONE_MEGABYTE;
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
但是,这里我收到错误(DocumentReference无法转换为com.google.firebase.storage.StorageReference)导致我尝试将DocReference转换为StorageReference。 但我需要它作为storageRef将其转换为位图... 还有其他方法可以继续吗? 附上我的firestore数据库的屏幕截图,以澄清我想要做什么。 谢谢你的帮助!
答案 0 :(得分:0)
Firestore不会自动将您拥有的路径转换为StorageReference
。相反,您必须自己创建StorageReference
并使用Firestore中的路径通过调用FirebaseStorage.getReferenceFromUrl(...)
对其进行初始化:
FirebaseStorage.getInstance().getReferenceFromUrl(exI.get("image"))
答案 1 :(得分:0)
好的,所以我离开了尝试使用引用并将我的数据库中的Reference转换为一个字符串,其中url是图像的值。 然后我只是查询了这个字符串对象并使用了Glide,它完美无缺! :) 所以我猜参考不能用于引用存储,但可能仅用于其他文档?