我知道我可以使用列出的特定 mime 類型這裡,或任何檔案的通用 mime 類型,例如application/octet-stream
,但是是否有一個適用於所有圖像檔案的通用 mime 類型?
(我想.desktop
在 Linux Mint KDE 中編輯一個文件,以在 Dolphin 文件管理器中創建一個“操作”上下文菜單條目,該條目僅針對圖像文件顯示。)
答案1
所有圖像檔案都有通用的 mime 類型嗎?
通常沒有,但本答案後面記錄了一些例外。
您需要 Mime 類型才能知道如何處理文件(無需讀取文件頭)。
筆記:
並非所有影像檔案都有標識其類型的標頭。
SVG 檔案例如,只是 XML 檔案。因此,如果沒有正確的 mimetype 或副檔名,就無法正確識別檔案的類型。
Mime 類型指定為 Content-Type/subtype
沒有 Mime 類型
image/generic
(有關 IANA 註冊圖像子類型的完整列表,請參閱下面的「進一步閱讀」)。
這是否意味著多個圖像檔案有一個 mime-type ?
沒有單身的 Content-Type/subtype
涵蓋多種圖像格式。
理論上,您可以使用未知的子類型,例如,image/xyz
但 W3C 明確表示:
「Content-Typeimage/xyz
足以告訴使用者代理資料是圖像,即使使用者代理程式不知道特定的圖像格式xyz
...」這樣的操作對於無法識別的文字子類型可能是合理的,但不適用於無法辨識的影像或音訊子類型」
一般來說,頂層Content-Type用於聲明資料的一般類型,而子類型則指定該類型資料的特定格式。
因此,「image/xyz」的內容類型足以告訴使用者代理資料是影像,即使使用者代理程式不知道特定影像格式「xyz」。
例如,此類資訊可用於決定是否向使用者顯示來自無法識別的子類型的原始資料——這樣的操作對於無法識別的文字子類型可能是合理的,但對於無法識別的圖像或音訊子類型則不合理。
因此,音訊、圖像、文字和視訊的註冊子類型不應包含實際上屬於不同類型的嵌入資訊。此類複合類型應使用“多部分”或“應用”類型來表示。
我可以使用通配符來image/*
表示我的特殊情況嗎?
這樣它就可以用於我的目的而無需指定單一檔案副檔名/MIME?
是的。如您所指出的,在為 KDE 和 GNOME 桌面環境指定「桌面條目」時可以使用萬用字元。
但是,請注意 Key=MimeType
已被棄用,因為有新的標準。
Type=MimeType
已棄用,因為現在有一個新標準,請參閱共享 MIME-info 資料庫規範了解更多。因此,Keys Patterns(與 MIME 類型關聯的各種檔案副檔名)和 DefaultApp(與該 MIME 類型關聯的預設應用程式)也被棄用。
來源桌面入門規格
您也可以在 IIS 中對 mime 類型使用通配符,但建議不是做這個:
您也可以透過新增通配符 (*) MIME 類型來將 IIS 配置為提供未定義的檔案類型。
不要在生產伺服器上使用通配符 MIME 類型。這樣做可能會導致 IIS 提供無法識別的文件並向使用者顯示敏感資訊。
通配符 MIME 類型旨在用於測試目的或專門開發 Internet 伺服器 API (ISAPI) 過濾器來處理這些通配符場景的場景,例如自訂身份驗證 ISAPI。
進一步閱讀
- IANA - 註冊媒體類型 - 圖像(圖像內容類型和子類型)
- W3C - 內容類型標頭字段