我试图在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:我在数据库中没有得到任何东西,只在存储中
我需要的是将每个网址放在不同的标签中 这就是我尝试使用此代码,但它不起作用