Firebase 存储规则、Libre Office 内容类型
Firebase storage rules, Libre Office contentTypes
我正在尝试编写允许使用某些特定扩展进行上传的 firebase 存储规则。我不知道如何为 Libre office 文件编写规则。我试过:
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') ||
其中 None 有效。如何编写加载 Libre Office 文件的规则?
根据 this Libre Office repo, the 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') ||
如果您查看 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 文件编写规则。我试过:
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') ||
其中 None 有效。如何编写加载 Libre Office 文件的规则?
根据 this Libre Office repo, the 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') ||
如果您查看 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
文件。已上传。