Firebase 存储规则,Libre Office contentTypes
Posted
技术标签:
【中文标题】Firebase 存储规则,Libre Office contentTypes【英文标题】:Firebase storage rules, Libre Office contentTypes 【发布时间】:2021-09-29 17:43:38 【问题描述】:我正在尝试编写允许上传带有某些特定扩展名的 firebase 存储规则。我不知道如何为 Libre 办公文件编写规则。我试过了:
request.resource.contentType.matches('.odt') ||
request.resource.contentType.matches('.ods') ||
request.resource.contentType.matches('.odp') ||
还有:
request.resource.contentType.matches('application/odt') ||
request.resource.contentType.matches('application/ods') ||
request.resource.contentType.matches('application/odp') ||
这些都不起作用。如何编写加载 Libre Office 文件的规则?
【问题讨论】:
【参考方案1】:根据this Libre Office repo,这些文件扩展名的MIME content types 是:
MIME type | Extension |
---|---|
application/vnd.oasis.opendocument.text (IANA) |
.odt |
application/vnd.oasis.opendocument.spreadsheet (IANA) |
.ods |
application/vnd.oasis.opendocument.presentation (IANA) |
.odp |
这些是“供应商树”媒体类型,因此它们以vnd.VENDOR.
开头。一些扩展,如 application/json
是 IANA 定义的类型,没有此前缀 - 通常不能在 /
之后添加扩展。
您的规则将是:
request.resource.contentType.matches('application/vnd.oasis.opendocument.text') ||
request.resource.contentType.matches('application/vnd.oasis.opendocument.spreadsheet') ||
request.resource.contentType.matches('application/vnd.oasis.opendocument.presentation') ||
【讨论】:
@Dharmaraj 确实。答案比赛很有趣。【参考方案2】:如果您查看 LibreOffice 保存的文件的属性,它们看起来像这样:
我查找了这些 mime 类型,并在 OpenOffice 的文档中找到了它们。
然后我尝试了这些安全规则,它们运行良好:
service firebase.storage
match /b/bucket/o
match /allPaths=**
allow write: if request.resource.contentType.matches('application/vnd.oasis.opendocument.*');
我只是在最后添加了一个通配符 ('application/vnd.oasis.opendocument.*'
)。我尝试使用 .odt
和 .ods
文件。它们已上传。
【讨论】:
以上是关于Firebase 存储规则,Libre Office contentTypes的主要内容,如果未能解决你的问题,请参考以下文章
使用颤振(或 Android)的 Firebase 存储规则