首页 > 解决方案 > 如何限制用户可以上传到 Firebase 存储的文件的总大小?

问题描述

我有一个应用程序应该允许用户上传总计 150 GB 的文件,并且应该阻止用户上传超出此范围的新文件。如何添加此限制?

标签: firebasefirebase-storage

解决方案


您必须通过云功能/服务器上传文件并跟踪用户上传的总大小:

1. Upload image to your server
2. check the size and add it to total size stored in a database
3. If the user has exceeded 150 GB, return quota exceeded error else upload to Firebase storage

user -> server -> Firebase storage

一个更简单的替代方法是使用Cloud Storage Triggers,它会在每次上传新文件时触发 Cloud 功能。您可以使用元数据检查对象大小并继续将其添加到数据库中。在这种情况下,您可以将用户使用的总存储空间存储在自定义声明中(以字节为单位)。

exports.updateTotalUsage = functions.storage.object().onFinalize(async (object) => {
  // check total storage currently used
  // add size of new object to it
  // update custom claim "size" (total storage in bytes)
});

然后您可以编写一个安全规则来检查新对象的大小总和以及正在使用的总存储不超过 150 GB:

allow write: if request.resource.size + request.auth.token.size < 150 * 1024 * 1024 * 1024;

推荐阅读