限制firebase存储路径中的文件数

时间:2017-05-21 03:43:21

标签: file firebase storage firebase-storage rules

我想限制用户可以上传到firebase存储路径的文件数。 这是我的firebase存储规则:

   service firebase.storage {
  match /b/jobsdbn.appspot.com/o {
    match /images/Business/{userId}/{imageId} {
       allow read
       allow write: if request.auth.uid == userId && (request.resource == null || ( (list(/images/Business/$(username)).size() <= 5) && imageId.size() < 50 && request.resource.size < 10 * 1024 * 1024 && request.resource.contentType.matches('image/.*')))

    }
  }
}

我在本文中添加了列表(/ images / Business / $(用户名))。size()&lt; = 5:https://groups.google.com/forum/#!topic/firebase-talk/ZtJPcEJr0Mc

但是我总是得到403并且不确定“用户名”是否是全局变量但是我使用了不同的变量但仍然无法使其工作。

1 个答案:

答案 0 :(得分:4)

如果有人需要答案我通过使用firebase云功能找到了解决方案:

exports.getNumOfFile = functions.storage.object().onChange(event => {
    const object = event.data; // The Storage object.
    const fileBucket = object.bucket; // The Storage bucket that contains the file.
    const bucket = gcs.bucket(fileBucket);
    bucket.getFiles({
        prefix: "[path]", //Path like what you use to get reference of your files in storage 
    }, (error, files) => {
        console.log(files.length);
    });
});

您可以在此处找到更多选项:

https://googlecloudplatform.github.io/google-cloud-node/#/docs/storage/1.1.0/storage/bucket?method=getFiles