我想将相册存储在Firebase数据库和存储中

时间:2019-10-26 04:16:07

标签: android firebase google-cloud-firestore

我想将图像存储为第一个集合名称,并将文档名称存储为相册名称,然后再存储带路径的图像名称。我已经存储了图像,但是并没有像我想要的那样存储图像。没有文档,我将无法创建另一个集合:

我要创建这个

 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 -> {
                        });
            }

我想先创建像专辑名称一样的专辑名称,然后再创建图像路径。我不知道该怎么做,我也不知道这是不可能的。我已经收到所有条目,但没有得到想要的。

1 个答案:

答案 0 :(得分:1)

使用专辑名称作为Gallery集合中文档的ID很容易:

FirebaseFirestore.getInstance().collection("Gallery").document(edtTitle.getText());

但是我建议不要将用户输入用作子集合名称。没有客户端API可以获取(子)集合的列表,因此最好使用代码中的集合名称。

我不确定子集合的用途是什么,但是如果它具有可识别的目的,则通常会以该目的命名该集合(例如image_ids),然后使用您的动态值命名文档想到了。