如何在Firebase

时间:2018-06-03 21:37:10

标签: java android firebase firebase-realtime-database firebase-storage

我在Firebase存储中一次存储多个图像,我需要在Firebase数据库中获取每个图像的URL。

以下是代码:

private void SaveVersus() {

    comment = Comment.getText().toString();

    if (imageUri==null||imageUri2==null){
        Toast.makeText(this, "...Select a Image...", Toast.LENGTH_SHORT).show();
    }
    else if(imageUri!=null&&imageUri2!=null&&imageUri3==null&&imageUri4==null) {
        //Save2ImagesFirebase();
        List<Uri> uri = Arrays.asList(imageUri,imageUri2);
        storeMultipleImages(uri);
    }
    else if(imageUri!=null&&imageUri2!=null&&imageUri3!=null&&imageUri4==null){
        //Save3ImagesFirebase();
        List<Uri> uri2 = Arrays.asList(imageUri,imageUri2,imageUri3);
        storeMultipleImages(uri2);
    }
    else if(imageUri!=null&&imageUri2!=null&&imageUri3!=null&&imageUri4!=null){
        //Save4ImagesFirebase();
        List<Uri> uri3 = Arrays.asList(imageUri,imageUri2,imageUri3,imageUri4);
        storeMultipleImages(uri3);
    }
}


public void storeImage(Uri imageUri) {
    StorageReference filepath = mStorage.child("Versus Images").child(imageUri.getLastPathSegment());
    filepath.putFile(imageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                downloadURL = task.getResult().getUploadSessionUri().toString();

                Toast.makeText(ImageVersus.this, "Versus Published", Toast.LENGTH_SHORT).show();

                GetInDB();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

}

private void GetInDB() {

    mDatabase.child(current_userID).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if(dataSnapshot.exists()){

                String username = dataSnapshot.child("Username").getValue().toString();
                HashMap InfoMap = new HashMap<>();
                InfoMap.put("username",username);
                InfoMap.put("imageUrl",downloadURL);
                versusDBRef.child(current_userID).updateChildren(InfoMap);
            }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}

public void storeMultipleImages(List<Uri> imageUris) {
    for (Uri uri : imageUris) {
        storeImage(uri);
    }


}

问题在于,在hashmap中,我只能放置一个图像的URL,我需要获取多个URL,具体取决于用户选择的图片数量,如果他们选择了两个,那么在hashmap中必须是两个URL等等。

0 个答案:

没有答案