MIME 类型查询
快速查询文件扩展名对应的 MIME 类型,支持搜索和分类筛选
文档(17)
application/pdf
application/msword
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.ms-excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.ms-powerpoint
application/vnd.openxmlformats-officedocument.presentationml.presentation
text/plain
application/rtf
application/vnd.oasis.opendocument.text
application/vnd.oasis.opendocument.spreadsheet
application/vnd.oasis.opendocument.presentation
text/csv
application/json
application/xml
text/html
text/html
图片(15)
image/jpeg
image/jpeg
image/png
image/gif
image/webp
image/svg+xml
image/x-icon
image/bmp
image/tiff
image/tiff
image/avif
image/heic
image/heif
image/vnd.adobe.photoshop
image/raw
音频(10)
audio/mpeg
audio/wav
audio/ogg
audio/mp4
audio/flac
audio/aac
audio/x-ms-wma
audio/aiff
audio/midi
audio/midi
视频(12)
video/mp4
video/webm
video/x-msvideo
video/quicktime
video/x-ms-wmv
video/x-flv
video/x-matroska
video/mp4
video/mpeg
video/mpeg
video/3gpp
video/mp2t
压缩包(9)
application/zip
application/vnd.rar
application/x-7z-compressed
application/x-tar
application/gzip
application/x-bzip2
application/x-xz
application/x-iso9660-image
application/x-apple-diskimage
代码(31)
application/javascript
application/javascript
application/typescript
application/typescript
application/javascript
text/css
text/x-scss
text/x-sass
text/x-less
text/x-python
text/x-java
text/x-c
text/x-c++
text/x-c
text/x-c++
text/x-csharp
text/x-go
text/x-rust
text/x-ruby
text/x-php
text/x-swift
text/x-kotlin
application/sql
application/x-sh
application/x-sh
application/x-yaml
application/x-yaml
application/toml
text/x-ini
text/x-vue
text/x-svelte
字体(5)
font/woff
font/woff2
font/ttf
font/otf
application/vnd.ms-fontobject
其他(16)
application/vnd.microsoft.portable-executable
application/x-msi
application/vnd.android.package-archive
application/octet-stream
application/vnd.debian.binary-package
application/x-rpm
application/java-archive
application/java-archive
application/x-shockwave-flash
application/x-chrome-extension
application/x-xpinstall
application/x-bittorrent
text/calendar
text/vcard
application/epub+zip
application/x-mobipocket-ebook
什么是 MIME 类型?
MIME 类型(Multipurpose Internet Mail Extensions)是一种互联网标准,用于表示文档、文件或字节流的性质和格式。浏览器和服务器使用 MIME 类型来确定如何处理接收到的内容。例如,当浏览器收到 image/jpeg 类型时会显示图片,收到 application/pdf 时可能会打开 PDF 预览。正确设置 MIME 类型对于 Web 应用的正常运行至关重要。
使用方法
快速参考
- 使用搜索框查找特定扩展名或 MIME 类型
- 点击分类标签按文件类型筛选
- 点击 "Ext" 或 "MIME" 按钮复制对应内容
- 浏览分类快速查找:文档、图片、音频、视频、压缩包、代码、字体等
查找注意事项
- MIME 类型是服务器、浏览器和应用程序共同遵循的约定,仅凭文件扩展名无法证明实际内容。
- 上传或安全检查时,建议同时校验声明的 MIME 类型和文件签名(magic number)。
使用场景
技术原理
MIME 类型(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)是数据格式的标准化标识符,最初在 RFC 2045/RFC 2046 中为电子邮件附件定义,后被 HTTP(RFC 7231 §3.1.1.5)采纳用于 Web 内容协商。MIME 类型的结构为 type/subtype——type 声明大类(text、image、audio、video、application、multipart、font、model),subtype 指定具体格式(如 text/html、image/png、application/json)。可选参数以分号分隔(text/html; charset=utf-8)。 IANA(互联网号码分配机构)在 iana.org/assignments/media-types 维护官方 MIME 类型注册表。注册遵循 RFC 6838,需要提交规范文档、安全注意事项和互操作性说明。未注册类型可使用 x- 前缀(如 application/x-tar)作为实验性或厂商特定格式的约定,但 RFC 6648 建议避免使用 x- 前缀,改为正式注册。 在 HTTP 中,Content-Type 头告知客户端如何解读响应体。服务器返回 Content-Type: image/svg+xml 会触发浏览器的 SVG 渲染器;返回 Content-Type: application/octet-stream 则触发下载提示,因为浏览器无法判断格式。浏览器还会利用 MIME 类型信息进行「内容嗅探」——当服务器省略 Content-Type 或发送通用类型时,浏览器可能检查响应的前几个字节(魔数字节)来猜测实际格式。此行为受 X-Content-Type-Options: nosniff 头控制,该头禁用嗅探并要求服务器声明正确的类型。 对于文件上传,Accept 头告知服务器客户端期望的 MIME 类型,而 input 元素的 accept 属性限制文件选择器为特定类型(如 accept="image/png, image/jpeg")。服务端应对上传文件同时验证其声明的 MIME 类型和文件签名(魔数字节),因为两者单独都不可信——一个名为 image.png 且 Content-Type 为 image/png 的文件可能包含可执行代码。本工具作为查询给定文件扩展名对应标准 MIME 类型的参考,覆盖八大类 100 多种常见格式。
- RFC 2046 结构:type/subtype——type 表示内容大类,subtype 表示具体格式;可选参数以分号分隔(text/html; charset=utf-8),规范中不区分大小写,但惯例使用小写
- IANA 注册(RFC 6838):新媒体类型需提交规范文档、安全注意事项和互操作性说明——审核流程确保类型在进入注册表前文档完备且无冲突
- HTTP Content-Type 头:服务器声明响应体的 MIME 类型;浏览器据此选择合适的渲染器(HTML 解析器、图片解码器、PDF 阅读器)或触发下载——Content-Type 错误是「文件被下载而非显示」问题的最常见原因
- 内容嗅探与 X-Content-Type-Options:当 Content-Type 缺失或为通用类型时,浏览器可能检查魔数字节猜测格式——X-Content-Type-Options: nosniff 禁用此行为并要求精确匹配 Content-Type,这是安全最佳实践
- application/octet-stream:通用二进制回退类型——浏览器将其视为不透明流并触发下载,是服务器无法判断格式时最安全的默认值,但会阻止本可在浏览器中预览的内容
- 文件上传验证:input 的 accept 属性在客户端过滤文件选择器,但服务端验证必须同时检查声明的 Content-Type 和文件的魔数字节——扩展名、MIME 类型和文件签名之间的不一致是恶意上传的危险信号
- 厂商特定和实验类型:x- 前缀约定(application/x-tar、video/x-matroska)早于正式注册流程——RFC 6648 建议尽可能迁移到正式的 IANA 注册类型,但许多仍在广泛使用
示例
Nginx mime.types 配置
types {
text/html html htm;
image/jpeg jpg jpeg;
application/pdf pdf;
application/javascript js;
}
说明: 每一行将一个 MIME 类型映射到一个或多个文件扩展名,Nginx 会在 Content-Type 响应头中返回该类型
IANA: https://www.iana.org/assignments/media-types/ 维护官方注册表HTTP Content-Type 响应头
Content-Type: application/json; charset=utf-8
说明: charset 是可选的,但对 text/* 和 application/json 建议带上,客户端依据它正确解码响应体
RFC: RFC 7231 第 3.1.1.5 节定义了 Content-Type 头的语义
MDN: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type浏览器 Blob 构造函数
const blob = new Blob([data], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
说明: blob 后续被下载或上传时,type 会成为 Content-Type,建议指定具体子类型,避免落到 application/octet-stream
MDN: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob 介绍 type 参数按类别划分的常见 MIME 类型
Text: text/plain, text/html, text/css, text/javascript, text/markdown
Image: image/jpeg, image/png, image/gif, image/webp, image/svg+xml
Audio: audio/mpeg, audio/wav, audio/ogg, audio/aac
Video: video/mp4, video/webm, video/ogg
Application: application/json, application/pdf, application/xml, application/zip
IANA 在 Media Types 注册表中按顶级类型对它们进行分类常见问题
什么是 MIME 类型,为什么它重要?
MIME 类型(多用途互联网邮件扩展,又称 media type)是形如 text/html、image/png 或 application/json 的简短标签,用来告诉接收端如何解读字节流。浏览器、邮件客户端、文件上传组件和 API 都依据它来决定渲染、下载、解析或拒绝内容。
MIME 类型和文件扩展名有什么区别?
扩展名只是文件名的一部分,是单纯的命名约定。MIME 类型是通过网络在 Content-Type 头部传输的。两者通常一致(.png ↔ image/png),但服务器可以为任意扩展名返回任意 MIME 类型,浏览器更信任头部而不是扩展名。保持二者一致是好习惯;仅依赖扩展名做安全控制则是漏洞。
application/octet-stream 是什么意思?
它是通用的「任意二进制数据」MIME 类型。浏览器收到该类型时会触发下载,而不是尝试渲染。服务器无法识别格式时通常会回退到这个类型,往往意味着 MIME 映射缺失或配置错误。能确定具体类型时,应尽量用更准确的 MIME。
可以用 Content-Type 来校验上传文件吗?
不能仅靠它。任何人都可以上传可执行文件却声明为 image/png。务必检查文件实际字节(魔数,PNG 头 89 50 4E 47、PDF 头 %PDF-、ZIP 头 PK),同时校验扩展名、在服务端使用白名单、限制文件大小。浏览器推断的 MIME 只能作为提示,而非证据。
为什么下载时保存的文件名或扩展名不对?
浏览器按 Content-Disposition 头、URL 路径、MIME 类型这一顺序确定保存名。如果服务器把 PDF 下载返回为 text/html,浏览器可能会把它存成 .html。设置 Content-Disposition: attachment; filename="name.pdf" 并搭配正确的 application/pdf MIME 类型即可避免此类问题。
如何为自定义或冷门格式找到合适的 MIME 类型?
首选查询 IANA 媒体类型注册表(iana.org/assignments/media-types)。对于未注册或厂商专属格式,惯例是使用 application/vnd.* 或 application/x-*(如 application/vnd.api+json、application/x-7z-compressed)。在自创新类型之前,先尝试匹配最接近的标准类型。
为什么 .json 和 .js 的 MIME 类型不同?
JSON 是数据,使用 application/json。JavaScript 是可执行代码,作为 text/javascript 或 application/javascript 提供(RFC 9239 推荐使用 text/javascript)。混淆它们会出问题:script 标签拒绝执行 application/json,部分服务器在只接受 text/javascript 时也会拒绝 application/javascript。