如何将图像保存到Firebase?

时间:2017-04-18 11:21:32

标签: android image firebase firebase-realtime-database imageview

我的情况: 在Add a Profile页面中,我有一个微调器,在该微调器内我有一个用户可以选择的图像列表。当用户选择图像并单击“保存”按钮时,我希望该图像转到数据库,以便我可以将其添加到另一个活动上。

我想将图像保存到数据库的原因是因为我想添加用户在我的主页上选择的图像。

我尝试了很多东西,包括: 在微调器内使用字符串而不是图像,然后当用户选择某个字符串时,它会将页面上的图像视图更改为正确的图像。但是我仍然有将图像获取到数据库的问题。我也试过绕过数据库,只是用IF语句和Intent等将图像添加到其他活动中,没有运气。

我的自定义微调器:

 int[] array = getResources().getIntArray(R.array.images_array);
        String [] objects = new String[array.length];
        for(int i = 0; i != array.length; i++){
            objects[i] = "" + array[i];
        }

        spinner5.setAdapter(new MyAdapter(AddProfileActivity.this, R.id.spinner5, objects));

    }
我尝试使用的保存按钮下的

然后String valueOfSelectedPos = spinner5.getSelectedItem().toString(); 我已经尝试了这一行的大多数变体,因为我知道我在这里使用String来尝试添加图像!

然后继续使用以下命令将其添加到我的数据库中:

String id =  databaseClients.push().getKey();

            Clients clients = new Clients(id, name, career,
 valueOfSelectedPos );

            databaseClients.child(id).setValue(clients);

你可能会说,我完全被这里难住了。 如果您需要任何澄清或添加更多代码,我将非常乐意发布。 任何帮助将不胜感激。提前致谢!

1 个答案:

答案 0 :(得分:2)

获取图像Uri您要保存到firebase,因为您可能需要将图像保存到设备存储,然后调用此方法

 private void uploadImage(Uri uri) {
            FirebaseStorage storage = FirebaseStorage.getInstance();
            StorageReference storageRef = storage.getReference().child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
            storageRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).putFile(uri);
        }