在firebase数据库中一次存储多个图像URL

时间:2018-06-06 09:36:53

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

我试图在firebase中一次存储多个图像URL,但它不起作用,代码似乎有意义 这是:

Uri imageUri;
Uri imageUri2;
Uri imageUri3;
Uri imageUri4;
Uri downloadURL;
Button Save;
FirebaseAuth mAuth;
DatabaseReference mDatabase,versusDBRef;
StorageReference mStorage;

String comment,current_userID;
List<Uri> URLs = new ArrayList<Uri>();

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();

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

            }
            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("imageURL1",URLs.get(0).toString());
                InfoMap.put("imageURL2",URLs.get(1).toString());
                InfoMap.put("imageURL3",URLs.get(2).toString());
                InfoMap.put("imageURL4",URLs.get(3).toString());

                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);
        URLs.add(downloadURL);
    }
    GetInDB();

}

图像存储在firebase存储中,但是当我尝试在数据库中找到URL时,会发生这两件事 1:我在一个标签中获得所有链接 2:我在数据库中没有得到任何东西,只在存储中

我需要的是将每个网址放在不同的标签中 这就是我尝试使用此代码,但它不起作用

0 个答案:

没有答案