用于 Solaris 操作环境的 GNOME 2.0 桌面系统管理指南

检测文件的 MIME 类型

应用程序检测文件的 MIME 类型的方法如下所示:

  1. 应用程序使用文件内容探测指令在文件中搜索一个特定样式。文件内容探测指令将文件中的一个特定样式与一种 MIME 类型相关联。 如果应用程序找到了与该样式相匹配的项,则该文件的 MIME 类型就是与该样式相关联的 MIME 类型。

  2. 如果内容探测指令无法确定文件的 MIME 类型,那么应用程序可以检查文件名。 应用程序将根据 MIME 类型注册表检查文件名。MIME 类型注册表将特定的文件扩展名和文件名样式与特定的 MIME 类型相关联。 如果找到了与该文件名相匹配的项,则该文件的 MIME 类型就是与该扩展名或样式相关联的 MIME 类型。

下文提供了有关文件内容探测指令和 MIME 类型注册表的详细信息。

文件内容探测指令

文件内容探测指令在 /usr/gnome/etc/gnome-vfs-mime-magic 文件中指定。以下是文件内容探测指令的一个示例:

0	string		\x89PNG					image/png

文件内容探测指令的语法如下所示:

offset_start[:offset_end] pattern_type pattern [&pattern_mask] type

表 4–1介绍文件内容探测指令中的各个字段。

表 4–1 文件内容探测指令中的字段

字段 

说明 

offset_start

指定在文件中搜索文本样式之前要忽略的字符数。 

pattern_type

指定要搜索的样式类型。 发布本指南时,string 样式类型是唯一受支持的样式类型。

pattern

指定要搜索的样式。  

pattern_mask

指定样式掩码,格式为十六进制。有关样式掩码的更多信息,请参阅下一节。

此字段是可选字段。 上面的示例中没有此字段。 

type

指定与此项匹配的文件的相应 MIME 类型。 

样式掩码

样式掩码标识在文件中搜索样式时忽略样式中的哪些数据位。下面是一个带有样式掩码的文件内容探测指令的示例:

0     string          BMxxxx\000\000 &0xffff00000000ffff      image/bmp

上例中的样式和掩码如下所示:

样式 

B

M

x

x

x

x

\000

\000

掩码 

ff

ff

00

00

00

00

ff

ff

该样式和掩码指定一个具有以下特性的文件:

  1. 文件以 BM 开头。

  2. BM 后面是长度为四个字节的任意值。

  3. 这四个字节后面是 \000\000

这个文件内容探测指令指定:与该样式和掩码匹配的文件的 MIME 类型为 image/bmp

MIME 类型注册表

MIME 类型注册表位于 /usr/gnome/share/mime-info 。MIME 类型注册表包含以下文件:

文件 

文件扩展名 

MIME 信息文件 

.mime

MIME 键文件 

.keys

下文介绍 MIME 信息文件和 MIME 键文件。

MIME 信息文件

MIME 信息文件将 MIME 类型与以下两项,或两项中的任意一项相关联。

当应用程序搜索文件的 MIME 类型时,应用程序将根据 MIME 信息文件检查文件名。 如果找到了与该文件名相匹配的项,则该文件的 MIME 类型就是与该扩展名或样式相关联的 MIME 类型。

在 MIME 信息文件中,要搜索的文件名样式以范式编写。

MIME 信息文件中的 MIME 类型项的格式如下所示:

MIME_type
		ext[,priority]: list_of_extensions
		regex[,priority]: list_of_regular_expressions

可以为文件扩展名或范式指定一个优先级。可以使用优先级来区别复合文件名。 例如,可将 .gz 扩展名的优先级指定为 1,并为 .tar.gz 扩展名指定一个更高的优先级,2。在这种情况下, 文件 abc.tar.gz 的 MIME 类型将被确定为 .tar.gz


注意:

必须用制表符 (\t) 将 ext 字段和 regex 字段缩进。


以下 MIME 类型项取自 gnome-vfs.mime MIME 信息文件:

application/x-compressed-tar
		regex,2: tar\.gz$
		ext: tgz
audio/x-real-audio
		ext: rm ra ram
image/jpeg
		ext: jpe jpeg jpg
image/png
		ext: png
text/html
		ext: html htm HTML
text/plain
		ext: asc txt TXT
text/x-readme
		regex: README.*

注意:

文件管理器将按照字母顺序读取 MIME 信息文件。 MIME 信息文件的字母顺序决定将 MIME 类型指定给文件扩展名或范式的顺序。 例如,如果在 abc.mime 文件和 def.mime 文件中为不同的 MIME 类型指定了同一个文件扩展名,则将使用 abc.mime 文件中指定的 MIME 类型。


MIME 键文件

MIME 键文件提供有关用户界面中使用的一个 MIME 类型的信息。 例如,MIME 键文件提供有关某个 MIME 类型的说明,并指定一个图标来表示属于该 MIME 类型的文件。

下面是 MIME 键文件的一个示例:

text/html
		description=HTML page
		icon_filename=gnome-text-html
		default_action_type=application
		short_list_application_ids_for_novice_user_level=mozilla,netscape,galeon
		category=Documents/World Wide Web

注意:

必须使用制表符 (\t) 将 MIME 键文件中的键缩进。


表 4–2介绍 MIME 键文件中最重要的键。 通常,description 键和 category 键会被本地化。

表 4–2 MIME 键文件中的键

键 

说明 

can_be_executable

指定属于该 MIME 类型的文件是否可以执行。 

description

提供有关该 MIME 类型的说明。 这些说明可在文件管理器和其他应用程序中显示。 

icon_filename

指定表示该 MIME 类型的图标的文件名。 不指定该文件名的路径,或文件扩展名。  

该图标可在文件管理器和其他应用程序中显示。  

default_action_type

指定当用户打开属于该 MIME 类型的文件时,执行哪类操作。 对于大多数应用程序,应输入该 MIME 类型的相应 application

short_list_application_ids _for_novice_user_level

指定当用户打开属于该 MIME 类型的文件时,使用哪个应用程序。可以按照优先顺序指定一个或多个应用程序。这些应用程序也必须在应用程序注册表中注册。 

category

为该 MIME 类型指定一个类别。 此键的值决定该 MIME 类型在文件类型和程序 (File Types and Programs) 首选项工具中的位置。