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

使用Firebase存储url更新Firebase数据库数据

储法
2023-03-14

这就是我的设想。我有一个POJO类,我们称之为Car,声明如下:

public class Plan{
private String id;
private String userId;
private List< String > pictures;
}

在那个类中,列表 图片应该包含到我实际上传图片的Firebase存储的链接。由于Firebase函数的异步根,我在这方面遇到了问题。在第一个时刻,pictures列表具有图像的本地路径,因为我不希望用户在完成向Firebase数据库添加记录所需的所有步骤之前上传任何内容。所以,我只保存图像的本地路径。但是,一旦数据保存到云中,我当然需要将这些映像上传到Firebase存储区,并更新Firebase数据库中的相应字段。

    public void saveToDB(){

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference databaseReference = database.getReference().child( "cars" );
    databaseReference.push().setValue( this, new DatabaseReference.CompletionListener(){
        @Override
        public void onComplete( @Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference ){
            if( databaseError != null ){
                for( String imagePath : pictures ){
                    final DatabaseReference picReference = FirebaseDatabase.getInstance().getReference()
                            .child( "cars" )
                            .child( databaseReference.getKey() )
                            .child( "pictures" );

                    storageReference.putFile( Uri.fromFile( new File( imagePath ) ) )
                            .addOnSuccessListener( new OnSuccessListener< UploadTask.TaskSnapshot >(){
                                @Override
                                public void onSuccess( UploadTask.TaskSnapshot taskSnapshot ){
                                            picReference.child( "0" )
                                            .setValue( taskSnapshot.getMetadata().getPath() );
                                }
                            } );
                }
            }
        }
    } );
}

我应该如何做到这一点,以使所有图片得到上传和所有字段更新在Firebase数据库?

共有1个答案

周楷
2023-03-14

您很可能最终将putFile()返回的所有Task对象收集到一个列表中,然后将其传递给tasks.whenAll()以获得另一个任务,该任务指示何时完成了所有上传。您可以从所有成功的任务中获取URL来填充数据库。安排所有这些将是一个相当大的代码量,您肯定应该熟悉Play services任务api才能很好地完成这一工作。

 类似资料:
  • 我正在尝试将Firebase与我的react应用程序一起使用。 我有一个配置文件如下: 当我尝试此操作时,会出现一个错误,显示: FIREBASE致命错误:无法确定FIREBASE数据库URL。在调用firebase时,请确保包含databaseURL选项。初始化app()。 我不能理解这个错误,因为我在初始化应用程序的调用中包含了配置。配置包括数据库URL。 如何初始化数据库?

  • 所以我试图将一些数据存储到我的实时数据库中。我目前有两个独立的视图控制器,一个用于用户注册,另一个用于用户选择其配置文件图像并能够更改该图像。在注册页面上,我将“用户名”保存到firebase,如下所示: 对于个人资料图像,我有这样保存的数据 我希望这两个数据都保存在“用户”下-

  • 我正在尝试使用Firebase存储和同步几个CSV文件。这些CSV文件的副本存储在内部存储器中。 为了在本地更新它们,我在Firebase存储桶中循环所有项目,比较两者之间的更新时间,然后如果有新版本,下载它。 除了从Firebase中提取元数据外,所有的东西似乎都运行得很好。Firebase文件的最新更新时间总是返回零?我觉得这很奇怪,因为它可以很好地下载文件,这意味着不应该有一个Firebas

  • 我正在寻找一种安全的方式来存储用户的敏感媒体像驾照图片。据我所知,没有办法从Firebase存储规则访问Firebase实时数据库,以查看用户是否被授权查看媒体。如果我错了就纠正我。文档中有一些允许某些用户访问介质的方法,但这对我来说并不可行,因为可能有多个用户将访问介质,并且他们的权限状态可能在将来更改。 null

  • 下载url来自一个单独的图像选择方法,顺便说一句。我的用户创建代码是这样的。