我想将图像存储为第一个集合名称,并将文档名称存储为相册名称,然后再存储带路径的图像名称。我已经存储了图像,但是并没有像我想要的那样存储图像。没有文档,我将无法创建另一个集合:
我要创建这个
btnSubmit.setOnClickListener(v -> {
if (edtTitle.getText().toString().isEmpty()){
Toast.makeText(this, "Please Enter Title", Toast.LENGTH_SHORT).show();
} else {
final String gelleryId =FirebaseFirestore.getInstance().
collection("Gallery").document(edtTitle.getText().toString()).getId();
progressDialog.setTitle("Uploading...");
progressDialog.show();
for(int i =0; i<arrayList.size(); i++){
StorageReference mStorageRef = FirebaseStorage.getInstance().getReference();
final StorageReference patientiamge = mStorageRef.child("Gallery").child(gelleryId).child(System.currentTimeMillis() + ".jpg");
patientiamge.putFile(arrayList.get(i))
.addOnSuccessListener(taskSnapshot -> {
if (taskSnapshot.getTask().isComplete()) {
patientiamge.getDownloadUrl().addOnSuccessListener(uri -> {
final String imageid = FirebaseFirestore.getInstance().collection("Gallery").document().getId();
GelleryListModel gelleryListModel = new GelleryListModel();
gelleryListModel.setId(imageid);
gelleryListModel.setAlbumName(edtTitle.getText().toString());
gelleryListModel.setImagePath(uri.toString());
gelleryListModel.setBranchId(String.valueOf(branchId));
Log.e("@@ImageId", imageid);
FirebaseFirestore.getInstance().collection("Gallery").document("").collection(edtTitle.getText().toString()).document().set(gelleryListModel).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
progressDialog.dismiss();
finish();
} else {
Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
});
});
}
})
.addOnFailureListener(exception -> {
});
}
我想先创建像专辑名称一样的专辑名称,然后再创建图像路径。我不知道该怎么做,我也不知道这是不可能的。我已经收到所有条目,但没有得到想要的。
答案 0 :(得分:1)
使用专辑名称作为Gallery
集合中文档的ID很容易:
FirebaseFirestore.getInstance().collection("Gallery").document(edtTitle.getText());
但是我建议不要将用户输入用作子集合名称。没有客户端API可以获取(子)集合的列表,因此最好使用代码中的集合名称。
我不确定子集合的用途是什么,但是如果它具有可识别的目的,则通常会以该目的命名该集合(例如image_ids
),然后使用您的动态值命名文档想到了。