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