是否有适用于所有图像文件的通用 MIME 类型?

39 mime-types image-processing

我知道我可以使用这里列出的特定 mime 类型,或任何文件的通用 mime 类型,例如application/octet-stream,但是否有所有图像文件的通用 mime 类型?

(我想.desktop在 Linux Mint KDE 中编辑一个文件,以在 Dolphin 文件管理器中创建一个“操作”上下文菜单条目,该条目仅对图像文件显示。)

Dav*_*ill 34

是否有适用于所有图像文件的通用 MIME 类型?

通常没有,但在本答案后面记录了一些例外情况。

您需要一个 Mime 类型才能知道如何处理文件(无需读取文件头)。

笔记:

  • 并非所有图像文件都有标识其类型的标头。

  • 例如,SVG 文件只是 XML 文件。因此,如果没有正确的 mimetype 或扩展名,就无法正确识别文件的类型。

  • Mime 类型被指定为 Content-Type/subtype

  • 没有 Mime 类型image/generic(有关 IANA 注册图像子类型的完整列表,请参阅下面的“进一步阅读”)。


这是否意味着多个图像文件有一个 MIME 类型?

没有一个 Content-Type/subtype涵盖多种图像格式。

从理论上讲,您可以使用未知的子类型,例如image/xyz但 W3C 明确表示:

“一个 Content-Type ofimage/xyz足以告诉用户代理数据是图像,即使用户代理不知道特定的图像格式xyz......”对于无法识别的文本子类型,这样的操作可能是合理的,但是不适用于无法识别的图像或音频子类型

一般而言,顶级Content-Type用于声明数据的一般类型,而子类型则指定该类型数据的特定格式。

因此,“image/xyz”的 Content-Type 足以告诉用户代理数据是图像,即使用户代理不知道特定的图像格式“xyz”。

例如,此类信息可用于决定是否向用户显示来自无法识别的子类型的原始数据——这样的操作对于无法识别的文本子类型可能是合理的,但对于无法识别的图像或音频子类型则无效。

因此,已注册的音频、图像、文本和视频子类型不应包含真正属于不同类型的嵌入信息。此类复合类型应使用“multipart”或“application”类型表示。

来源W3C - Content-Type 标头字段


我可以在image/*特殊情况下使用通配符吗?

以便它可以用于我的目的而无需指定单个文件扩展名/ mime?

是的。正如您所指出的,在为 KDE 和 GNOME 桌面环境指定“桌面条目”时可以使用通配符。

但是,请注意 Key=MimeType已被弃用,因为有一个新标准。

Type=MimeType已弃用,因为现在有一个新标准,有关详细信息,请参阅共享 MIME 信息数据库规范。因此,密钥模式(与 MIME 类型关联的各种文件扩展名)和 DefaultApp(与此 MIME 类型关联的默认应用程序)也被弃用。

桌面条目规范

您还可以在 IIS 中对 mime 类型使用通配符,但建议要这样做:

您还可以通过添加通配符 (*) MIME 类型来配置 IIS 以提供未定义的文件类型。

不要在生产服务器上使用通配符 MIME 类型。这样做可能会导致 IIS 提供无法识别的文件并向用户显示敏感信息。

通配符 MIME 类型用于测试目的或用于专门开发 Internet 服务器 API (ISAPI) 过滤器来处理这些通配符场景的场景,例如自定义身份验证 ISAPI。

创建全局 MIME 类型


进一步阅读

  • @cipricus 没有 **single** `content-type/subtype` 涵盖多种图像格式。 (3认同)