TL; DR:現在的問題是:庫跨平臺的MIME類型映射到文件擴展名,反之亦然
- 你知道,我可以從C使用一個跨平臺的庫++映射MIME類型< - >文件擴展名
我的應用程序應該處理圖像和視頻文件的一致好評。我試圖儘可能地作爲平臺不可知的,所以我選擇使用Qt4作爲我的主要庫。 Phonon框架(用於處理視頻文件)和QImage(用於處理圖像,顯然)都可以報告它們支持的文件格式。 Phonon將返回已安裝後端支持的MIME類型列表,QImage使用文件擴展名列表表示支持的文件格式。
應用程序應該從QString fileName
找出是否從中創建VideoObject
或ImageObject
。我的方法是創建一個map<QString, FuncPtr>
,它返回適當的工廠方法來創建正確的對象。對於字符串我目前使用文件擴展名,因爲從文件名推斷文件擴展名非常容易。但是現在我沒有優雅的方式來註冊支持的視頻文件類型,因爲我只知道他們的MIME類型。
如果我使用的MIME類型的關鍵在我map<QString, FuncPtr>
,我將面臨的問題是如何
- 一)映射文件名的MIME類型(不知道該怎麼做平臺獨立,可延伸)
- 二)通過映射QImage的提供給MIME類型的文件擴展名
我知道,根據我的研究到現在,很多人都建議使用「阿帕奇mime.types文件」 ,這將阻止我支持新文件當客戶端更新後端時,可以使用腳墊(WebM,WebP,...)。
我發現的其他建議是在Linux上掃描「/etc/mime.types」(我可以這樣做),或者在Windows上「查詢註冊表」(不知道該怎麼做)。但是這似乎非常侷限於這兩個平臺,Mac OS X等等。
除了上面提到的問題,我也歡迎任何形式或形式的其他建議。也許我錯過了一些明顯的腦死亡。