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

从firebase存储和实时数据库获取图像

庄康胜
2023-03-14

所以,我想让用户同时上传多个图像到firebase存储。我已经成功地完成了这部分,但现在我想要取回图像。一开始,我上传一个图像给每个用户,并将图像id保存到实时数据库中,这样就很容易通过图像id检索回图像。但是现在我如何为每个用户保存多个图像到实时数据库我不能使用相同的子名,因为它将被替换为旧的。有什么想法吗??

上载图像并在实时数据库上设置id:

private void Fileuploader() throws FileNotFoundException {
        String imageid;

        progress.showProgress(profuctadd.this,"Loading...",false);
        DatabaseHelper databaseHelper = new DatabaseHelper(profuctadd.this);
        Cursor getimage = databaseHelper.GetPath();
        int count = 0;
        while (getimage.moveToNext()){
            Bitmap bm = BitmapFactory.decodeFile(getimage.getString(0));
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            bm.compress(Bitmap.CompressFormat.JPEG, 35, out);
            imageid = arabic.getText().toString()+"-"+System.currentTimeMillis()+"_"+(count++)+"."+getExtension(uri);
            System.out.println("IMAGES UPLOADEDDDD: "+ imageid);
            String id = getIntent().getStringExtra("storeid");
            member.setImageid(imageid);
            reference.child(id).child(arname).setValue(member);
            byte[] data = out.toByteArray();
            StorageReference Ref = mStorageRef.child(imageid);
            Ref.putBytes(data)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            // Get a URL to the uploaded content
                            //Uri downloadUrl = taskSnapshot.getDownloadUrl();
                            //Toast.makeText(profuctadd.this,"Image uploaded",Toast.LENGTH_LONG).show();
                            progress.hideProgress();
                            Intent intent = new Intent(profuctadd.this,showProducts.class);
                            intent.putExtra("spec",getIntent().getStringExtra("spec"));
                            intent.putExtra("storeid",getIntent().getStringExtra("storeid"));
                            startActivity(intent);
                            DatabaseHelper mDatabaseHelper = new DatabaseHelper(profuctadd.this);
                            Cursor cursor2 = mDatabaseHelper.DeleteDataOfTableImagesAr();
                            cursor2.moveToNext();
                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception exception) {
                            // Handle unsuccessful uploads
                            // ...
                            Toast.makeText(profuctadd.this,"Failed",Toast.LENGTH_LONG).show();
                        }
                    });

        }





    }

我的firebase数据库:

共有1个答案

苏鸿卓
2023-03-14

您可以在images节点中保存多个特定用户的图像。

DatabaseReference dr =  FirebaseDatabase.getInstance().getReference("tL131);

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

  • 我正在尝试获取我的用户名,并在应用程序打开时向他/她问好。但我无法根据某个用户的uid获取数据。当我运行应用程序时,祝酒词从未真正出现。 数据库结构 密码

  • 我正在尝试上传图像到firebase,以及其他字符串和双数据类型。 我现在正在考虑两个选项,一个是上载imageUrl到firebase实时数据库,当我检索它时,我将检索一个imageUrl并将其转换为图像。 谢谢你的帮助!我很感激。

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