2010-11-20 37 views
3

TL; DR:現在的問題是:庫跨平臺的MIME類型映射到文件擴展名,反之亦然

  • 你知道,我可以從C使用一個跨平臺的庫++映射MIME類型< - >文件擴展名

我的應用程序應該處理圖像和視頻文件的一致好評。我試圖儘可能地作爲平臺不可知的,所以我選擇使用Qt4作爲我的主要庫。 Phonon框架(用於處理視頻文件)和QImage(用於處理圖像,顯然)都可以報告它們支持的文件格式。 Phonon將返回已安裝後端支持的MIME類型列表,QImage使用文件擴展名列表表示支持的文件格式。

應用程序應該從QString fileName找出是否從中創建VideoObjectImageObject。我的方法是創建一個map<QString, FuncPtr>,它返回適當的工廠方法來創建正確的對象。對於字符串我目前使用文件擴展名,因爲從文件名推斷文件擴展名非常容易。但是現在我沒有優雅的方式來註冊支持的視頻文件類型,因爲我只知道他們的MIME類型。

如果我使用的MIME類型的關鍵在我map<QString, FuncPtr>,我將面臨的問題是如何

  • 一)映射文件名的MIME類型(不知道該怎麼做平臺獨立,可延伸)
  • 二)通過映射QImage的提供給MIME類型的文件擴展名

我知道,根據我的研究到現在,很多人都建議使用「阿帕奇mime.types文件」 ,這將阻止我支持新文件當客戶端更新後端時,可以使用腳墊(WebM,WebP,...)。

我發現的其他建議是在Linux上掃描「/etc/mime.types」(我可以這樣做),或者在Windows上「查詢註冊表」(不知道該怎麼做)。但是這似乎非常侷限於這兩個平臺,Mac OS X等等。

除了上面提到的問題,我也歡迎任何形式或形式的其他建議。也許我錯過了一些明顯的腦死亡。

回答

4

就像你已經寫過你的問題一樣,我會從Apache或某些Linux發行版中獲取mime文件,並將其與應用程序一起發貨。

就我個人而言,我認爲爲了「永久保持最新狀態」而擁有「圖書館」是毫無意義的。

MIME在過去幾年中變得越來越龐大,但實際上您只需要1%或更少的所有定義的MIME類型。人們沒有各種各樣的文件格式

如果你想瀏覽一些,IANA列出了大多數流行的MIME類型。

TL; DR:從Apache或某些Linux發行版以大部分完整的mimefile發送您的應用程序,並且不必擔心從所有目標系統「實時」讀取它。

相關問題