說明
本表為文章 78400 的姊妹篇,內容高度重合但排版不同。為避免重複,此處提供差異化價值:按功能分類整理、新增現代格式、提供程式化查詢代碼片段。
按功能分類速查
🌐 Web 核心
| 副檔名 | MIME 類型 | 用途 |
| .html, .htm | text/html | 網頁主文檔 |
| .css | text/css | 樣式表 |
| .js, .mjs | application/javascript | JavaScript 模組 |
| .json | application/json | 資料交換 |
| .xml | application/xml | 結構化資料 |
| .wasm | application/wasm | WebAssembly 二進制 |
| .webmanifest | application/manifest+json | PWA 清單 |
🖼️ 圖片格式
| 副檔名 | MIME 類型 | 特性 |
| .jpg, .jpeg, .jpe | image/jpeg | 有損壓縮、照片首選 |
| .png | image/png | 無損、支援透明、UI 圖標首選 |
| .gif | image/gif | 動畫、256 色、簡單圖形 |
| .webp | image/webp | Google 格式、優於 JPEG/PNG |
| .avif | image/avif | AV1 關鍵幀、新一代高壓縮 |
| .svg | image/svg+xml | 向量、無限縮放、圖表/圖標 |
| .bmp | image/bmp | 無壓縮、體積大、少用於 Web |
| .ico | image/x-icon | 網站圖標、多解析度內含 |
| .heic, .heif | image/heic | HEVC 關鍵幀、iOS 預設 |
🎵 音訊/🎬 視訊
| 副檔名 | MIME 類型 | 編碼/容器 |
| .mp3 | audio/mpeg | MPEG-1 Layer 3 |
| .wav | audio/wav | PCM 無損、RIFF 容器 |
| .ogg | audio/ogg | Vorbis/Opus、開源免授權 |
| .aac, .m4a | audio/aac | Advanced Audio Coding |
| .flac | audio/flac | 無損壓縮、音響發燒友 |
| .mp4, .m4v | video/mp4 | H.264/H.265、最通用容器 |
| .webm | video/webm | VP8/VP9/AV1、開源、Web 首選 |
| .mov | video/quicktime | Apple 容器、專業剪輯 |
| .mkv | video/x-matroska | 開源容器、多軌道/字幕 |
| .ts | video/mp2t | MPEG-TS、串流/直播 |
| .3gp, .3gpp | video/3gpp | 行動裝置舊格式 |
📦 文件/封存/可執行檔
| 副檔名 | MIME 類型 | 說明 |
| .pdf | application/pdf | 可攜式文件格式 |
| .zip | application/zip | 最通用壓縮 |
| .rar | application/vnd.rar | RAR 壓縮 |
| .7z | application/x-7z-compressed | 7-Zip 高壓縮比 |
| .tar.gz, .tgz | application/gzip | Tar + Gzip |
| .jar, .war, .ear | application/java-archive | Java 封裝 |
| .apk | application/vnd.android.package-archive | Android 安裝包 |
| .ipa | application/vnd.iphone | iOS 安裝包 |
| .exe, .dll, .so | application/octet-stream | 二進制可執行/庫 |
| .msi | application/x-msi | Windows 安裝程式 |
| .deb | application/vnd.debian.binary-package | Debian 軟體包 |
| .rpm | application/x-rpm | Red Hat 軟體包 |
📱 行動/J2ME 專用 (重點)
| 副檔名 | MIME 類型 | 用途 |
| .jad | text/vnd.sun.j2me.app-descriptor | J2ME OTA 描述檔 |
| .jar | application/java-archive | J2ME 應用主體 |
| .sis, .sisx | application/vnd.symbian.install | Symbian 安裝包 |
| .wbmp | image/vnd.wap.wbmp | WAP 位圖 (1-bit) |
| .wml, .wmlc | text/vnd.wap.wml / application/vnd.wap.wmlc | WML 頁面/編譯後 |
| .amr | audio/amr | 自適應多速率語音 |
| .mmf | application/x-skt-lbs | SMAF 鈴聲 (日本) |
| .nokia-op-logo | image/vnd.nok-oplogo-color | Nokia 彩色運營商 Logo |
程式化查詢工具
Java: MimeTypeUtils (獨立實現,無第三方依賴)
import java.util.*;
public final class MimeTypeUtils {
private static final Map MAP = new HashMap<>();
static {
// 核心類型
MAP.put("html", "text/html"); MAP.put("htm", "text/html");
MAP.put("css", "text/css"); MAP.put("js", "application/javascript");
MAP.put("json", "application/json"); MAP.put("xml", "application/xml");
MAP.put("jpg", "image/jpeg"); MAP.put("jpeg", "image/jpeg"); MAP.put("png", "image/png");
MAP.put("gif", "image/gif"); MAP.put("webp", "image/webp"); MAP.put("svg", "image/svg+xml");
MAP.put("mp3", "audio/mpeg"); MAP.put("wav", "audio/wav"); MAP.put("ogg", "audio/ogg");
MAP.put("mp4", "video/mp4"); MAP.put("webm", "video/webm");
MAP.put("pdf", "application/pdf"); MAP.put("zip", "application/zip");
MAP.put("jar", "application/java-archive"); MAP.put("jad", "text/vnd.sun.j2me.app-descriptor");
// ... 可擴充至 500+ 條目
}
public static String getMimeType(String fileName) {
if (fileName == null) return "application/octet-stream";
int dot = fileName.lastIndexOf('.');
if (dot == -1) return "application/octet-stream";
String ext = fileName.substring(dot + 1).toLowerCase(Locale.ROOT);
return MAP.getOrDefault(ext, "application/octet-stream");
}
public static String getExtension(String mimeType) {
// 反向查詢,取第一個匹配
for (Map.Entry e : MAP.entrySet()) {
if (e.getValue().equals(mimeType)) return e.getKey();
}
return "bin";
}
}
JavaScript/Node.js: mime-types 套件 (業界標準)
const mime = require('mime-types');
mime.lookup('hello.jar'); // 'application/java-archive'
mime.lookup('app.jad'); // 'text/vnd.sun.j2me.app-descriptor'
mime.extension('image/webp'); // 'webp'
mime.contentType('json'); // 'application/json; charset=utf-8'
安裝:npm install mime-types (含 mime-db 官方資料庫,定期更新)
Python: mimetypes 標準庫 + 自定義擴充
import mimetypes
mimetypes.add_type('text/vnd.sun.j2me.app-descriptor', '.jad')
mimetypes.add_type('application/java-archive', '.jar')
mimetypes.guess_type('game.jad') # ('text/vnd.sun.j2me.app-descriptor', None)
mimetypes.guess_extension('application/java-archive') # '.jar'
Web 伺服器配置最佳實踐
- 集中管理:維護單一
mime.types 檔案,所有虛擬主機共用
- 版本控制:將
mime.types 納入 Git,變更可追蹤、可回滾
- 自動化測試:CI 流程中驗證關鍵類型 (JAD/JAR/APK/IPA) 正確返回
- 安全性:對上傳檔案雙重驗證:副檔名 + Magic Number (檔案頭) + MIME 類型,防止偽裝惡意檔案
結語
MIME 類型看似枯燥,實則是跨系統資料交換的通用語言。從 J2ME 的 .jad 到現代 PWA 的 .webmanifest,從 image/gif 到 image/avif,每一個類型的誕生與演進,都記錄著軟體工程適應新硬體、新場景、新需求的歷程。建議專案建立 MimeTypeRegistry 集中管理,而非硬編碼分散在控制器、服務、工具類中。