You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制单个用户可上传到Firebase Storage的文件总大小?

实现Firebase Storage单用户150GB上传限额的方案

要实现这个限制,需要配合Firebase安全规则和用户容量统计存储两个部分完成,仅靠安全规则无法单独实现累计容量校验。

步骤1:配置用户容量统计存储

首先在Firestore中为每个用户创建专属统计文档,新增usedStorage字段记录用户已上传的所有文件总大小,单位统一为字节:

150GB换算为字节数值为161061273600,后续校验统一用该数值作为上限。

步骤2:编写Storage安全规则

在Firebase Storage控制台的规则编辑页,添加如下校验规则,限制单用户上传总量:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    // 假设用户上传的文件都存储在 /users/{userId} 目录下
    match /users/{userId}/{allPaths=**} {
      allow write: if request.auth != null 
        && request.auth.uid == userId
        // 已用容量+本次上传文件大小 ≤ 150GB上限
        && (request.resource.size + firestore.get(/databases/(default)/documents/users/$(userId)).data.usedStorage) <= 161061273600;
      allow read: if request.auth != null && request.auth.uid == userId;
    }
  }
}

步骤3:自动同步用户已用容量

安全规则本身无法自动更新累计容量,你需要通过Cloud Storage触发器自动同步数值,避免前端篡改:

  • 监听onFinalize事件:用户上传文件成功后,将该文件的size加到相应用户的usedStorage字段中
  • 监听onDelete事件:用户删除文件后,将被删除文件的size从相应用户的usedStorage字段中扣除

注意事项

  • 上传前可以在前端提前做容量校验,给用户提前预警,避免上传大文件时被规则拦截
  • 不要让前端直接修改usedStorage字段,必须通过服务端/Cloud Trigger更新,防止用户恶意篡改统计数值

内容的提问来源于stack exchange,提问作者Ojas_Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:00:02