【问题标题】:Firebase storage rules, Libre Office contentTypesFirebase 存储规则,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 文件的规则?

【问题讨论】:

    标签: firebase firebase-storage firebase-security


    【解决方案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 文件。它们已上传。

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 2021-01-03
      • 2020-11-28
      • 2017-06-16
      • 1970-01-01
      • 2018-08-03
      • 2017-01-25
      • 2020-07-03
      相关资源
      最近更新 更多