Java 在同一对象中链接图像的Firebase实时数据库

Java 在同一对象中链接图像的Firebase实时数据库,java,android,firebase,firebase-realtime-database,firebase-storage,Java,Android,Firebase,Firebase Realtime Database,Firebase Storage,如果你有这样的课程,有可能吗 public class UserInfo { String name; String age; String url; } 首先从android上传图像,该图像保存在firebase存储中。 在下一步中,您将发布您的姓名、年龄和上次上载图像使用的存储空间,并将此图像与姓名和年龄链接 Model user = new Model (name,age,url); 比如说 名字:“约翰” 年龄:50 url:firebase url图

如果你有这样的课程,有可能吗

public class UserInfo {
    String name;
    String age;
    String url;
}
首先从android上传图像,该图像保存在firebase存储中。 在下一步中,您将发布您的姓名、年龄和上次上载图像使用的存储空间,并将此图像与姓名和年龄链接

    Model user = new Model (name,age,url);
比如说

名字:“约翰”

年龄:50

url:firebase url图像创建模型类

   public class Model implements Serializable {
   public String name;
   public String age;
   public String photoUrl;

   public Model (){
   }

public Model (String name, String age,String photoUrl){
   this.name= name;
   this.age= age;
   this.photoUrl= photoUrl;
}
}  
在firebase存储中插入图像

  UploadTask uploadTask;
  uploadTask = imagePathReference.putBytes(dataNew);
  uploadTask.addOnFailureListener(new OnFailureListener() {
  @Override
  public void onFailure(@NonNull Exception exception) {
   Log.e("firebase ", " addOnFailureListener ");
  }
 }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {

 @Override
 public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
 //taskSnapShot u will get the download url.
 }
 });

在此对象(用户)中,您将拥有所有数据。现在将对象保存在实时firebase表中。

是。您只需使用Firebase存储上传图像,在回调中,您就可以获得该图像的可下载URL。然后将所有值放在自定义对象中,并将该对象保存在Firebase的实时数据库中。

我已经使用过这种类型的任务

根据您的要求尝试此代码

  StorageReference riversRef = mStorageRef.child("posts/images" + userId + "/" + String.valueOf(System.currentTimeMillis()) + ".jpg");
                            riversRef.putBytes(bytes)
                                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                        @Override
                                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                            // Get a URL to the uploaded content
                                            Uri downloadUrl = taskSnapshot.getDownloadUrl();
                                            Log.d("downloadUrl", "" + downloadUrl);

                                            writeNewPost(userId, user.getUsername(), user.getProfilePic(), String.valueOf(downloadUrl), body);
                                        }
                                    })
                                    .addOnFailureListener(new OnFailureListener() {
                                        @Override
                                        public void onFailure(@NonNull Exception exception) {
                                            // Handle unsuccessful uploads
                                            // ...

                                        }
                                    }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                                @Override
                                public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                                    //calculating progress percentage
                                    double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();

                                    //displaying percentage in progress dialog
                                }
                            });
storagereferef=mStorageRef.child(“posts/images”+userId+“/”+String.valueOf(System.currentTimeMillis())+“.jpg”);
riversRef.putBytes(字节)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//获取上传内容的URL
Uri downloadUrl=taskSnapshot.getDownloadUrl();
Log.d(“downloadUrl”,“downloadUrl+downloadUrl”);
writeNewPost(userId,user.getUsername(),user.getProfilePic(),String.valueOf(downloadUrl),body);
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理不成功的上传
// ...
}
}).addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(UploadTask.TaskSnapshot TaskSnapshot){
//计算进度百分比
双进度=(100.0*taskSnapshot.GetByTestTransferred())/taskSnapshot.getTotalByteCount();
//显示“进度百分比”对话框
}
});
writeNewPost函数如下所示-

private void writeNewPost(String userId, String username, String userImage, String img, String body) {
    // Create new post at /user-posts/$userid/$postid and at
    // /posts/$postid simultaneously
    String key = mDatabase.child(KeyTAG.TAG_POSTS).push().getKey();
    Post post = new Post(userId, username, body, img, userImage, key, DateTimeUtil.GetUTCdatetimeAsDate(),"image","noThumb");
    Map<String, Object> postValues = post.toMap();

    Map<String, Object> childUpdates = new HashMap<>();
    childUpdates.put("/" + KeyTAG.TAG_POSTS + "/" + key, postValues);

    mDatabase.updateChildren(childUpdates);
    mDialog.hide();

}
private void writeNewPost(字符串userId、字符串username、字符串userImage、字符串img、字符串body){
//在/user posts/$userid/$postd和
///posts/$posted
String key=mDatabase.child(KeyTAG.TAG_POSTS).push().getKey();
Post Post=新Post(userId、username、body、img、userImage、key、DateTimeUtil.GetUTCdatetimeAsDate()、“image”、“noThumb”);
Map postValues=post.toMap();
Map childUpdates=newhashmap();
childUpdates.put(“/”+KeyTAG.TAG_POSTS+“/”+key,postValues);
mDatabase.updateChildren(childUpdates);
mDialog.hide();
}

实际上,您希望存储特定的用户详细信息,如图像、姓名、年龄。。对吗?我想在同一个对象(名称、年龄和图像的url)中有,但我想从firebase生成的图像的url