检查Firebase存储中是否存在具有特定名称的文件夹

时间:2018-09-02 14:41:23

标签: android firebase firebase-storage

在Firebase存储中,我有一个名为uploads/的文件夹。在该文件夹中,我有多个以注册用户的userId命名的文件夹。

这就是我想要做的。当用户输入“ ProfileActivity”时,如果在uploads /文件夹下有任何以该用户的userId命名的文件夹,则代码将在Firebase数据库中查找。如果文件夹不存在,然后相应地运行代码。

这是我到目前为止所做的,但是此处addValueEventListener尚未解决。我做对了吗?我在这里想念什么?

public class ProfileActivity extends AppCompatActivity {

    private FirebaseAuth mAuth;
    private StorageReference mStorageRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);

        mAuth = FirebaseAuth.getInstance();
        mStorageRef = FirebaseStorage.getInstance().getReference("uploads");
    }


    @Override
    protected void onStart() {
        super.onStart();
        FirebaseUser user = mAuth.getCurrentUser();
        String userID = user.getUid();
        if (user.isEmailVerified()) {
            StorageReference userFolder = mStorageRef.child(userID);
            userFolder.addValueEventListener(new ValueEventListener() {
                @Override
                void onDataChange(DataSnapshot snapshot) {
                    if (snapshot.exists()) {
                        // run some code
                    } else {
                        //Code
                    }
                }
            });

        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果问题是关于使用 C# 检查实时 firebase 数据库中是否存在文件夹,那么答案如下:

您可以使用DataSnapshot 返回的json,在搜索项目时确定该目录是否存在。如果 json 为 null,即使该值可能不存在,它也不存在(或为空)。 这可以使用 org.hibernate.context.CurrentSessionContext

完成

这是一个例子:

我的 Firebase 数据库结构如下所示:

  • 用户
    • 鲍勃
      • 姓名:“鲍勃”
      • 年龄:24

以下是如何检查数据库中是否存在值“Bob”的完整代码:

DataSnapshot.GetRawJsonValue()

答案 1 :(得分:0)

Cloud Storage for Firebase没有像Realtime Database这样的事件列表器。您正在尝试执行不支持的操作(这就是为什么会出现编译器错误的原因)。请参阅StorageReference的API文档,以了解您可以使用该对象做什么。

最重要的是,无法检查Cloud Storage中是否存在“文件夹”。 Cloud Storage实际上没有任何文件夹。它仅包含带有类似于文件夹的路径组件的文件。

如果您想知道文件是否存在(不是“文件夹”),则可以在引用该文件的StorageReference上使用getMetadata方法。