首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

常用 MIME 類型大全:副檔名與 Content-Type 標準對照表 (第二版)

     編輯:J2ME

說明

本表為文章 78400 的姊妹篇,內容高度重合但排版不同。為避免重複,此處提供差異化價值:按功能分類整理、新增現代格式、提供程式化查詢代碼片段。

按功能分類速查

🌐 Web 核心

副檔名MIME 類型用途
.html, .htmtext/html網頁主文檔
.csstext/css樣式表
.js, .mjsapplication/javascriptJavaScript 模組
.jsonapplication/json資料交換
.xmlapplication/xml結構化資料
.wasmapplication/wasmWebAssembly 二進制
.webmanifestapplication/manifest+jsonPWA 清單

🖼️ 圖片格式

副檔名MIME 類型特性
.jpg, .jpeg, .jpeimage/jpeg有損壓縮、照片首選
.pngimage/png無損、支援透明、UI 圖標首選
.gifimage/gif動畫、256 色、簡單圖形
.webpimage/webpGoogle 格式、優於 JPEG/PNG
.avifimage/avifAV1 關鍵幀、新一代高壓縮
.svgimage/svg+xml向量、無限縮放、圖表/圖標
.bmpimage/bmp無壓縮、體積大、少用於 Web
.icoimage/x-icon網站圖標、多解析度內含
.heic, .heifimage/heicHEVC 關鍵幀、iOS 預設

🎵 音訊/🎬 視訊

副檔名MIME 類型編碼/容器
.mp3audio/mpegMPEG-1 Layer 3
.wavaudio/wavPCM 無損、RIFF 容器
.oggaudio/oggVorbis/Opus、開源免授權
.aac, .m4aaudio/aacAdvanced Audio Coding
.flacaudio/flac無損壓縮、音響發燒友
.mp4, .m4vvideo/mp4H.264/H.265、最通用容器
.webmvideo/webmVP8/VP9/AV1、開源、Web 首選
.movvideo/quicktimeApple 容器、專業剪輯
.mkvvideo/x-matroska開源容器、多軌道/字幕
.tsvideo/mp2tMPEG-TS、串流/直播
.3gp, .3gppvideo/3gpp行動裝置舊格式

📦 文件/封存/可執行檔

副檔名MIME 類型說明
.pdfapplication/pdf可攜式文件格式
.zipapplication/zip最通用壓縮
.rarapplication/vnd.rarRAR 壓縮
.7zapplication/x-7z-compressed7-Zip 高壓縮比
.tar.gz, .tgzapplication/gzipTar + Gzip
.jar, .war, .earapplication/java-archiveJava 封裝
.apkapplication/vnd.android.package-archiveAndroid 安裝包
.ipaapplication/vnd.iphoneiOS 安裝包
.exe, .dll, .soapplication/octet-stream二進制可執行/庫
.msiapplication/x-msiWindows 安裝程式
.debapplication/vnd.debian.binary-packageDebian 軟體包
.rpmapplication/x-rpmRed Hat 軟體包

📱 行動/J2ME 專用 (重點)

副檔名MIME 類型用途
.jadtext/vnd.sun.j2me.app-descriptorJ2ME OTA 描述檔
.jarapplication/java-archiveJ2ME 應用主體
.sis, .sisxapplication/vnd.symbian.installSymbian 安裝包
.wbmpimage/vnd.wap.wbmpWAP 位圖 (1-bit)
.wml, .wmlctext/vnd.wap.wml / application/vnd.wap.wmlcWML 頁面/編譯後
.amraudio/amr自適應多速率語音
.mmfapplication/x-skt-lbsSMAF 鈴聲 (日本)
.nokia-op-logoimage/vnd.nok-oplogo-colorNokia 彩色運營商 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 伺服器配置最佳實踐

  1. 集中管理:維護單一 mime.types 檔案,所有虛擬主機共用
  2. 版本控制:將 mime.types 納入 Git,變更可追蹤、可回滾
  3. 自動化測試:CI 流程中驗證關鍵類型 (JAD/JAR/APK/IPA) 正確返回
  4. 安全性:對上傳檔案雙重驗證:副檔名 + Magic Number (檔案頭) + MIME 類型,防止偽裝惡意檔案

結語

MIME 類型看似枯燥,實則是跨系統資料交換的通用語言。從 J2ME 的 .jad 到現代 PWA 的 .webmanifest,從 image/gif 到 image/avif,每一個類型的誕生與演進,都記錄著軟體工程適應新硬體、新場景、新需求的歷程。建議專案建立 MimeTypeRegistry 集中管理,而非硬編碼分散在控制器、服務、工具類中。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved