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 類型和檔案簽章。
使用場景
技術原理
MIME 類型(Multipurpose Internet Mail Extensions)是資料格式的標準化識別碼,最初在 RFC 2045/RFC 2046 中定義用於電子郵件附件,後來被 HTTP(RFC 7231 §3.1.1.5)採用於網頁內容協商。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 類型資訊進行 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 是「檔案下載而非顯示」錯誤最常見的原因。
- MIME 嗅探與 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 type?為什麼重要?
MIME type(Multipurpose Internet Mail Extensions,又稱媒體類型)是像 text/html、image/png 或 application/json 這樣的簡短標籤,用來告訴接收端的軟體要怎麼解讀一段位元組資料。瀏覽器、郵件客戶端、檔案上傳器和 API 都依賴它來決定要渲染、下載、解析還是拒絕內容。
MIME type 跟副檔名有什麼不同?
副檔名是檔名的一部分,純粹是命名慣例。MIME type 則是透過網路在 Content-Type 標頭中傳遞。兩者通常一致(.png ↔ image/png),但伺服器其實可以用任何 MIME type 提供任何副檔名的檔案,瀏覽器信任標頭遠勝於副檔名。讓兩者一致是好習慣;若把副檔名當成安全防線,那就是漏洞。
application/octet-stream 是什麼意思?
這是「任意二進位資料」的通用 MIME type。瀏覽器收到時會直接提供下載而不嘗試渲染。當伺服器無法辨識格式時就會退回到這個值,通常表示 MIME 對應設定缺漏或錯誤。能換成正確的具體類型就盡量換。
可以信任 Content-Type 來驗證上傳的檔案嗎?
光靠它不行。任何人都可以一邊上傳執行檔一邊宣稱是 image/png。請務必嗅探實際位元組(魔術數字,PNG 開頭 89 50 4E 47、PDF 開頭 %PDF-、ZIP 開頭 PK),檢查副檔名,在伺服器端套用白名單,並限制檔案大小。瀏覽器送出的 MIME 是線索,不是證據。
為什麼下載時檔名或副檔名不對?
瀏覽器決定儲存名稱的順序是:Content-Disposition 標頭、URL 路徑、MIME type。如果伺服器把 PDF 下載回應成 text/html,瀏覽器可能會把它存成 .html。設定 Content-Disposition: attachment; filename="name.pdf" 並搭配正確的 application/pdf MIME type 就能避免這類意外。
怎麼幫自訂或冷門格式找到正確的 MIME type?
先查 IANA 媒體類型登錄表(iana.org/assignments/media-types)。對於未登錄或廠商特定格式,慣例是用 application/vnd.* 或 application/x-*(例如 application/vnd.api+json、application/x-7z-compressed)。發明新類型前,先找最接近的標準對應。
為什麼 .json 和 .js 的 MIME type 不一樣?
JSON 是資料,用 application/json。JavaScript 是可執行程式碼,會以 text/javascript 或 application/javascript 提供(RFC 9239 將 text/javascript 訂為建議值)。混用會出問題:script 標籤拒絕執行 application/json,而某些伺服器也會拒收 application/javascript,只接受 text 變體。