浏览器按 Content-Type 头决定如何处理一个文件: 类型给错, 页面会被下载而不是渲染, 该加载的字体可能被直接拒掉. 一张查询表让答案随手可得, 不用离开浏览器. MIME 类型查询 内置一张 125 行的静态表, 把扩展名映射到 MIME 类型与分类, 支持搜索, 分类筛选与 CSV 导出, 全部在浏览器内完成, 不上传任何数据.
125 行, 5 个分类
表中 125 条记录分 5 个分类: Text 26 条, Image 16 条, Audio 11 条, Video 12 条, Application 60 条, 覆盖 124 个不同的扩展名, 因为 .ts 出现了两次. 把全部类型字符串的长度加起来, 这张表共 2,098 个字符. 每行以等宽字体显示扩展名, 类型和带颜色的分类徽章. 搜索框对扩展名和 MIME 字符串做大小写不敏感的子串匹配, 并且可以和分类筛选叠加.
一个页面的 5 个资源
一个典型页面会发出 app.js, data.csv, logo.png, film.mp4 和 font.woff2. 5 次查询分别得到 text/javascript (Text), text/csv (Text), image/png (Image), video/mp4 (Video) 和 font/woff2 (Application). 分类徽章与 MIME 家族并不总是一致: .mjs 和 .cjs 是 text/javascript 却归在 Application, .svg 是 image/svg+xml 却归在 Text.
搜索对两个字段做子串匹配
输入 image 会返回 19 行, 而不是 Image 分类的 16 行, 因为 .svg 归在 Text, .dmg 与 .iso 归在 Application, 而它们的类型字符串里包含 image 这个词. 输入 mp 返回 9 行, 包括 .bmp (bmp 含 mp), .ts (经 video/mp2t), .rar 与 .7z (经 x-rar-compressed 里的 compressed). 输入 ts 返回 8 行, .docx, .xlsx 与 .pptx 也出现在结果里, 因为它们 Office 类型字符串的尾部是 formats.
.ts 冲突与 16 个共享类型
.ts 的冲突是全表唯一: 它返回 video/mp2t (MPEG 传输流, 归 Video) 和 text/typescript (归 Application), 这正是 125 行只覆盖 124 个扩展名的原因. 16 个类型被多个扩展名共享: text/plain 覆盖 5 个 (.txt, .ini, .cfg, .log, .env), text/javascript 覆盖 4 个 (.js, .jsx, .mjs, .cjs), image/jpeg 覆盖 2 个. 最长的类型是 .pptx 的 73 个字符, 最短的只有 8 个 (text/css, text/xml, text/csv). 图片文件的问题常是尺寸与格式, 图片信息查看器 可以给出答案; 用图片压缩器从 png 重编码成 webp 后, 必须声明的类型也随之改变.
43 个未注册的 x- 厂商类型
125 行中有 43 行使用 x- 厂商前缀: video/x-matroska, application/x-rar-compressed, image/x-icon, text/x-sql. 它们从未在 IANA 注册, 却是事实标准, 每个浏览器与服务器都遵守, 而已注册的核心 (image/png, video/mp4, application/json) 保持稳定. 当扩展名说谎时, 答案在字节里: Hex UTF-8 Base64 转换器 显示能揭示真实容器的魔数.
类型字符串用在哪里
拿到字符串之后, 它要进入服务器配置, API 头或 data URI. Base64 编解码器 构造 data:image/png;base64 这样的 URI, 类型前缀直接来自这张表. CSV 转 JSON 把导出的 mime-types.csv 变成代码可用的 JSON 映射. JSON 格式化 校验随 Content-Type application/json 发出的载荷. 网页默认类型 text/html 那一侧, 见HTML 格式化指南.