MIME 类型是用于标记文件格式的简短标签,例如 image/jpeg 表示一张 JPG 照片。MIME 是 Multipurpose Internet Mail Extensions(多用途互联网邮件扩展)的缩写。现在官方名称是媒体类型(media type),所以你常常会同时看到这两个术语。
当你读取一个文件的元数据时,MIME 类型会告诉你这个文件的格式。浏览器和邮件程序会根据这个标签来决定如何打开、显示或播放该文件。
该数值的格式
一个 MIME 类型由两部分组成:类型和子类型,中间用斜杠分隔,中间没有空格。类型表示数据的大类,子类型表示具体格式。在 image/jpeg 中,类型是 image,子类型是 jpeg。
IANA 官方的类型列表有 11 个条目:application、audio、example、font、haptics、image、message、model、multipart、text 和 video。其中 example 类型只用于示例,因此不会在其下注册任何格式。
大小写字母含义相同,但 MIME 类型通常写成小写。分号后面可以跟一个参数。例如,text/plain;charset=UTF-8 表示一个使用 UTF-8 字符集的纯文本文件。
典型值
以下是网页上常见格式及其对应的 MIME 类型:
- JPG 照片:
image/jpeg - PNG 图片:
image/png - PDF 文档:
application/pdf - MP3 音频:
audio/mpeg - MP4 视频:
video/mp4 - 纯文本:
text/plain - Word 文档(DOCX):
application/vnd.openxmlformats-officedocument.wordprocessingml.document
Word 子类型开头的 vnd. 表示厂商格式,也就是与某个公开可用产品关联的格式。加号后面的后缀表示底层格式。image/svg+xml 基于 XML,而 application/epub+zip 是一个 ZIP 压缩包。
一个 JPG 文件可以有多种扩展名,例如 .jpg、.jpeg 或 .jpe,但它只有一个 MIME 类型:image/jpeg。IANA 官方的媒体类型列表中没有名为 image/jpg 的条目。
数值的来源
MIME 类型起源于电子邮件。第一个 MIME 标准 RFC 1341 发布于 1992 年 6 月。有了 MIME,电子邮件可以携带其他字符集、图片等非文本内容,以及由多个部分组成的消息。
现在由 1996 年 11 月发布的 RFC 2045 定义了描述消息内容的 Content-Type 行。网站会在每个文件的 Content-Type 头中发送同样类型的标签。互联网号码分配局(IANA)维护媒体类型的官方列表。
为了找出格式,程序可以查看文件名扩展名,或查看文件开头的几个字节。扩展名只是文件名的一部分,不能保证一定正确。很多格式以固定的字节序列开头,称为魔数(magic number),但并不是所有格式都有。
哪些文件携带它
元数据报告可以为多种文件显示 MIME 类型:照片、歌曲、视频或文档。常见的元数据读取器 ExifTool 在其 File 分组中将这个值列为 MIMEType。同一分组中还包含文件类型和文件扩展名。
有些格式还会在文件内部携带 MIME 类型。一个 EPUB 电子书必须以一个名为 mimetype 的小文件开头,里面保存 application/epub+zip。在 MP3 文件的 ID3 标签中,附件图片会标记自己的格式,例如 image/jpeg 或 image/png。
它的重要性
浏览器根据 MIME 类型而不是文件扩展名来决定如何处理来自网络的文件。如果标签不正确,页面可能无法正常工作,浏览器也可能以错误的方式处理下载。
当网站无法识别某种文件类型时,通常会发送 application/octet-stream,表示未知的二进制数据。浏览器这时一般会提示你保存文件,而不是直接打开。