java - 如何在 Firebase 中获取多个图像的 URL
问题描述
我在 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 和很快。
解决方案
推荐阅读
- c - 如何在物理内存中获取二进制数据(windows)(c语言)
- javascript - JavaScript 对象和动态属性调用
- ros - 柳絮一号如何使用非柳絮包
- excel - 在 Excel 中使用公式遇到一些问题
- http-status-code-503 - Hostinger 商业计划的连接超时错误
- swiftui - 如何将默认值设置为范围
当我使用 ForEach 方法时? - smartcard - 我可以在没有读卡器和实体卡的情况下使用 Javacard 吗?
- r - Calculate survival p values for multiple variables
- javascript - 如何从单选按钮输入字段中获取值?代码库
- python - 从python字符串中获取子子字符串