当前位置: 首页 > 知识库问答 >
问题:

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

衡子琪
2023-03-14

如果你有这样的课,有没有可能

public class UserInfo {
    String name;
    String age;
    String url;
}

首先从android上传图像,该图像保存在firebase存储中。在下一步中,您将发布您的姓名、年龄和上次上传图像使用的存储空间,并将此图像与姓名和年龄链接

举个例子

姓名:'John'

年龄:50

url:firebase url图像

共有3个答案

孙书
2023-03-14

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

根据您的要求尝试此代码,

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

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

}
李兴安
2023-03-14

创建模型类,

   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.
 }
 });

保存下载url,然后在获得姓名和年龄后进入下一步

    Model user = new Model (name,age,url);

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

闻人伟
2023-03-14

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

 类似资料:
  • Firebase提供了它们在空闲层中支持最多100个同时连接的信息。 问题1)假设我的数据库中有一个表,应用程序用户可以在屏幕上看到该表。每当我更新表格时,内容的变化也会反映在应用程序中(在手机上)。由于最大同时连接数设置为100,这是否意味着Firebase一次只能为100个用户刷新内容(在用户端)? 问题2)有人知道用户在与实时数据库交互后保持连接状态的时间吗? (很遗憾,这个问题没有代码,但

  • 这是我的firebase聊天结构(见下图)。我只想获得amitpal_name值,而不是其他值,而是这个方法来获取所有值 我也使用了这个 DBreference=FireBaseDatabase.GetInstance().GetReference(“ChatMessage”).Child(“Msg”).Child(“AmitPal_Name”); 我也尝试了下面这个方法,给了我很好的预期的效果,

  • 在执行应用程序检查后,我的firebase实时数据库在我的unity应用程序中无法工作。在firebase应用程序检查功能之前,它完全可以正常工作。但现在,当我试图保存数据时,它拒绝了我的数据库请求,当我在app check monitor中监视我的实时数据库时,它显示我的请求没有包含app check令牌: 这可能是因为您正在使用旧的firebase SDK,其中应用程序检查位于应用程序内部 我

  • 我在一个Android应用程序中使用Firebase数据库,每次用户启动时,我都会在数据库中存储一些值,为此我会执行以下操作: 正如您在子方法中看到的,如果称为“usrId”,它将创建usrId目录,并在其中添加所有neccesary信息。但是我想为每个用户创建目录,所以我尝试传递usrId变量作为参数。但它不起作用。当我调试代码时,调试器说本地var usrId无法识别,我的问题是如何在Fire

  • 我一直在努力解决这个问题,无法使用以下代码解析firebase实时数据库中的数据。我什么都试过了,但我做不到。下面是必要文件的代码。我正在使用提供程序进行状态管理。 我的供应商代码: 我调用的小部件: 我的模型课: 我得到以下错误: 如果有人能帮忙,我将非常感激,它已经调试了很长时间...

  • 我是Android的新手,我正在做一个应用程序,可以显示用户上传的衣服图片。我可以完美地上传图片,但由于某种原因,我无法将firebase实时数据库中的图像显示到中。几周来我一直在寻找解决办法。 请帮帮我。非常感谢你抽出时间。 topactivity.java 下面是我在TopsActivity.java中所做的更改