如何在Firebase存储上上传多个图像

时间:2020-11-10 21:47:27

标签: android firebase firebase-storage

我在Firebase存储器上上传了四个图像,现在我想将四个图像引用存储在Firebase数据库的单个json树中。我的代码将单个图像的图像URL引用添加到数据库中的四个不同字段,而不是将每个图像URL引用插入数据库中的相应字段。我如何获取每个图像的特定url引用,并将其插入在Firebase数据库中用于它的字段中。下面是我的uploadImage方法。

在此处输入代码

private  void uploadImage(final String note){
    int j=0;
    Uri[] uri=new Uri[selectData.size()];
    final ArrayList<String> storeTask = new ArrayList<>();

while(j

        storage = FirebaseStorage.getInstance();
        storageReference = storage.getReference();
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("Uploading.....");
        progressDialog.show();
        ref = storageReference.child("/" + note
                + "/" + uri[j].getLastPathSegment());

        //final int i=j;
      uploadTask = ref.putFile(uri[j]);
final int finalJ = j;
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                progressDialog.dismiss();

                uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
                    @Override
                    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                        if (!task.isSuccessful()) {
                            throw task.getException();
                        }
                        return ref.getDownloadUrl();
                    }
                }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                    @Override
                    public void onComplete(@NonNull Task<Uri> task) {
                        if (task.isSuccessful()) {
                            switch(finalJ){
                                case 0:
                            FirebaseDatabase.getInstance().getReference()
                                    .child("notes")
                                    .child(note)
                                    .child("attach_url").setValue(task.getResult().toString());
                            break;
                                case 1:
                                    FirebaseDatabase.getInstance().getReference()
                                            .child("notes")
                                            .child(note)
                                            .child("attach_url1").setValue(task.getResult().toString());
                                    break;
                                case 2:
                                    FirebaseDatabase.getInstance().getReference()
                                            .child("notes")
                                            .child(note)
                                            .child("attach_url2").setValue(task.getResult().toString());
                                    break;
                                case 3:
                                    FirebaseDatabase.getInstance().getReference()
                                            .child("notes")
                                            .child(note)
                                            .child("attach_url3").setValue(task.getResult().toString());
                                    break;
                                default:
                                    break;
                            }

                        }
                    }
                });
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                progressDialog.dismiss();
                Toast.makeText(NewNoteActivity.this, "Failed" + e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
                double progress = (100.0 * snapshot.getBytesTransferred() / snapshot.getTotalByteCount());
                progressDialog.setMessage("Uploaded "  +  (int) progress + "%");
            }
        });
j++;
    }

}

0 个答案:

没有答案
相关问题