我知道我可以使用列出的特定 mime 类型这里,或者像任何文件的通用 mime 类型application/octet-stream
,但是是否存在所有图像文件的通用 mime 类型?
(我想.desktop
在 Linux Mint KDE 中编辑一个文件,以在 Dolphin 文件管理器中创建一个仅适用于图像文件的“操作”上下文菜单条目。)
答案1
所有图像文件都有通用的 mime 类型吗?
通常情况下不会出现这种情况,但是这个答案后面会记录一些例外情况。
您需要一个 Mime 类型才能知道如何处理文件(而无需读取文件头)。
笔记:
并非所有图像文件都有标识其类型的标头。
SVG 文件例如,只是 XML 文件。因此,如果没有正确的 mimetype 或扩展名,就无法正确识别文件的类型。
Mime 类型指定为 Content-Type/subtype
没有 Mime 类型
image/generic
(请参阅下面的“进一步阅读”以获取 IANA 注册图像子类型的完整列表)。
这是否意味着多个图像文件有一个 mime-type?
没有单身的 Content-Type/subtype
涵盖多种图像格式。
理论上你可以使用未知的子类型,例如,image/xyz
但 W3C 明确指出:
“Content-Typeimage/xyz
足以告诉用户代理数据是图像,即使用户代理不知道具体的图像格式xyz
……“对于无法识别的文本子类型,这样的操作可能是合理的,但不适用于无法识别的图像或音频子类型“
一般来说,顶级的 Content-Type 用于声明数据的一般类型,而子类型则指定该类型数据的特定格式。
因此,Content-Type 为“image/xyz”足以告诉用户代理该数据是图像,即使用户代理不知道特定的图像格式“xyz”。
例如,这些信息可用于决定是否向用户显示无法识别的子类型的原始数据——对于无法识别的文本子类型,这种操作可能是合理的,但对于无法识别的图像或音频子类型则不合理。
因此,音频、图像、文本和视频的已注册子类型不应包含实际上属于不同类型的嵌入信息。此类复合类型应使用“多部分”或“应用程序”类型表示。
image/*
我可以像我的特殊情况那样使用通配符吗?
这样它就可以用于我的目的而不需要指定单个文件扩展名/MIME?
是的。正如您所指出的,在为 KDE 和 GNOME 桌面环境指定“桌面条目”时可以使用通配符。
但是,请注意,Key=MimeType
已被弃用,因为有新的标准。
Type=MimeType
已被弃用,因为现在有了新的标准,请参阅共享 MIME 信息数据库规范了解更多信息。因此,Keys Patterns(与 MIME 类型关联的各种文件扩展名)和 DefaultApp(与此 MIME 类型关联的默认应用程序)也将被弃用。
来源桌面入门规格
您还可以在 IIS 中使用通配符来表示 MIME 类型,但建议不是做这个:
您还可以通过添加通配符 (*) MIME 类型将 IIS 配置为提供未定义的文件类型。
不要在生产服务器上使用通配符 MIME 类型。这样做可能会导致 IIS 提供无法识别的文件并向用户显示敏感信息。
通配符 MIME 类型用于测试目的或在专门开发了 Internet 服务器 API(ISAPI)过滤器来处理这些通配符场景的场景中,例如自定义身份验证 ISAPI。
进一步阅读
- IANA - 注册媒体类型 - 图像(图像内容类型及其子类型)
- W3C - Content-Type 标头字段