我在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++;
}
}