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的主要内容,如果未能解决你的问题,请参考以下文章

读取 Firebase 存储映像安全规则

Firebase 存储安全规则

使用颤振(或 Android)的 Firebase 存储规则

为特定用户提供访问权限的 Firebase 存储安全规则

Firebase 存储安全规则,允许公共或所有者私有文件访问

Firebase 存储安全规则不适用于文件夹