2010-05-08 78 views
1

我有一個INI文件中mimetype的擴展列表。但是一些擴展名有多個mimetypes,例如;發送最正確的mimetype

midi[] = "application/x-midi"
midi[] = "audio/midi"
midi[] = "audio/x-mid"
midi[] = "audio/x-midi"
midi[] = "music/crescendo"
midi[] = "x-music/x-midi"

6(可能的)MIME類型1點的擴展。什麼常見的做法來確定正確的mimetype? (例如,我需要設置一個HTTP內容類型標題)。

我知道它不理想;確定基於擴展的mimetypes ..但我需要一致的(跨服務器)結果(例如PHP中的fileinfo擴展做出可怕的猜測*)。

*一些文件信息結果,例如;

  • JS - text/plain的
  • CSS - 文本/ C-H
+0

在PHP或一般? – 2010-05-08 09:08:44

+0

在im編程中,但我可以想象在其他語言彈出相同的問題。 也不僅僅是「作爲內容類型的價值」,而是可選的其他目的。 – 2010-05-08 09:15:42

回答

0

我最終想出了在下面的;

首先我使用「FileInfo」進行100%(已知)匹配(例如gif,jpeg,png),因爲我確實想要依靠某些文件的「指紋」檢測。

如果上面的失敗,我回退「擴展2 mimetype」地圖;基於docs/conf/mime.types(我過濾了所有常用的文件;例如圖像,音頻,視頻,網頁,文本)

如果仍未找到匹配,我再次使用「FileInfo」允許任何結果。

此時,如果仍未設置mimetype,則返回硬編碼的「application/octet-stream」。

1

在這一天,你有最好的到底是文件擴展名。

對於肯定列表,在Apache源代碼樹中找到此: 文檔/ conf目錄/的mime.types

+0

我已經想通了;-)關鍵是我有多種可能的mimetypes可供選擇...我不知道哪一個挑選。 編輯; 嗯..「確定列表」在1擴展指向1 mimetype? – 2010-05-08 11:09:26

+0

不,你可以有多個擴展到1 mimetype。例如exe,dll,com,bat和msi映射到應用程序/ x-msdownload我希望我可以在這裏粘貼列表,但它的條目超過1000個條目! – zaf 2010-05-08 17:02:36

+0

我看了清單..和它的確確定義(例如每個擴展1 mimetype ..但是你怎麼正確的格式化它;多個擴展映射到1 mimetype)..即時通訊要堅持這個,但是,謝謝! – 2010-05-09 10:10:50