firebase - 如何限制用户可以上传到 Firebase 存储的文件的总大小?
问题描述
我有一个应用程序应该允许用户上传总计 150 GB 的文件,并且应该阻止用户上传超出此范围的新文件。如何添加此限制?
解决方案
您必须通过云功能/服务器上传文件并跟踪用户上传的总大小:
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;
推荐阅读
- html - yaml和haml中的上标
- r - 尽管谓词为真,但对命名向量的名称使用过滤器会返回一个空的命名向量?
- python - Python - 仅使用国家名称对不同的数据框进行地理映射
- printing - OCaml - 在从函数返回之前打印
- tensorflow - 'tensorflow.python.framework.ops.EagerTensor' 对象没有属性 '_keras_history' 加上使用带有 validate_indices 收集的警告
- pytorch - Actor-Critic 模型:如何在模型和动作批次之间调整大小
- godot - 如何为 Godot 制作 Multimesh 构建脚本?
- c++ - 如何在 C++ 编译时检测结构的成员是否是位域?
- java - 使用 CheckableSpinnerAdapter
- performance - PowerShell :: Get-Counter 显示错误的 CPU 使用率