正在加载,请稍候…

MIME 类型:定义与使用方法

了解 MIME 类型(媒体类型)及其在 HTTP 头中的工作原理,为任何文件扩展名找到正确的类型。

MIME 类型:定义与使用方法

什么是 MIME 类型?

MIME 类型(Multipurpose Internet Mail Extensions type,也称为媒体类型或内容类型)是一种标识数据格式的标签。最初为电子邮件附件创建,现在 MIME 类型被用于任何需要数据格式标识的地方——HTTP 响应、文件上传、数据 URL 和 HTML。

MIME 类型:定义与使用方法 插图

MIME 类型语法

MIME 类型遵循以下格式:

type/subtype
type/subtype; parameter=value

示例:

  • text/html — HTML 文档
  • text/html; charset=UTF-8 — 带编码参数的 HTML
  • application/json — JSON 数据
  • image/png — PNG 图像
  • multipart/form-data; boundary=something — 带边界的表单数据

MIME 类型分类

text

人类可读的文本内容:

  • text/plain — 纯文本
  • text/html — HTML 标记
  • text/css — CSS 样式表
  • text/javascript — JavaScript(尽管 application/javascript 更准确)
  • text/csv — CSV 数据

image

视觉内容:

  • image/jpeg — JPEG 照片
  • image/png — 支持透明的 PNG
  • image/gif — 动画 GIF
  • image/webp — 现代高效格式
  • image/svg+xml — SVG 矢量图形
  • image/avif — AV1 图像文件格式(现代、高效)

audio

声音内容:

  • audio/mpeg — MP3 音频
  • audio/ogg — Ogg Vorbis
  • audio/wav — 未压缩音频
  • audio/aac — AAC 音频
  • audio/webm — WebM 音频

MIME 类型:定义与使用方法 插图

video

视频内容:

  • video/mp4 — MP4 视频
  • video/webm — WebM 视频
  • video/ogg — Ogg Theora

application

非文本的二进制或结构化数据:

  • application/json — JSON 数据
  • application/xml — XML 数据
  • application/pdf — PDF 文档
  • application/zip — ZIP 归档
  • application/gzip — Gzip 压缩
  • application/octet-stream — 未知二进制(通用二进制)
  • application/x-www-form-urlencoded — HTML 表单数据

multipart

包含多个部分的复合内容:

  • multipart/form-data — 文件上传表单
  • multipart/mixed — 带附件的电子邮件

HTTP 中的 MIME 类型

Content-Type 头告诉接收方响应体的格式:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8

{"status": "ok"}

Accept 头告诉服务器客户端可以处理的格式:

GET /api/users HTTP/1.1
Accept: application/json, text/plain, */*

HTML 表单中的 Content-Type

HTML 表单编码由 enctype 属性控制:

<!-- URL 编码(默认) -->
<form method="post" enctype="application/x-www-form-urlencoded">

<!-- 文件上传必需 -->
<form method="post" enctype="multipart/form-data">

MIME 类型:定义与使用方法 插图

常见 MIME 类型陷阱

application/octet-stream

通用二进制类型。浏览器会下载而不是显示此类型的文件。使用特定类型以确保浏览器正确处理。

text/javascriptapplication/javascript

两者都被广泛使用;现代规范推荐 text/javascript。实践中,两者在浏览器中均可工作。

application/x-www-form-urlencodedmultipart/form-data

对于带有 JSON 体的 API POST 请求,使用 application/json。仅在上传实际二进制文件时使用 multipart/form-data

MIME 嗅探

某些浏览器会忽略声明的 Content-Type,而是“嗅探”实际内容以确定类型。这可能带来安全风险。X-Content-Type-Options: nosniff 头可防止此行为。

文件扩展名到 MIME 类型的映射

常见映射:

扩展名 MIME 类型
.html text/html
.css text/css
.js text/javascript
.json application/json
.png image/png
.jpg image/jpeg
.pdf application/pdf
.zip application/zip
.mp4 video/mp4
.mp3 audio/mpeg

使用 MIME 类型参考工具

我们的工具:

  1. 按扩展名搜索 — 查找任何文件扩展名的 MIME 类型
  2. 按 MIME 类型搜索 — 查找任何 MIME 类型的文件扩展名
  3. 浏览分类 — 探索某个分类中的所有类型
  4. 复制类型 — 一键复制以在代码中使用
  5. 查看浏览器支持 — 浏览器原生支持哪些类型

Web 开发人员设置 Content-Type 头、处理文件上传和配置 Web 服务器时必备的参考。