我怎樣才能找出給定文件的MIME類型或內容類型? 我無法使用後綴,因爲該文件可能會被重命名。找出MIME類型和相關應用程序使用Qt
可能增加將他們歸類爲JPG,GIF,PNG等是圖像文件,並且可以通過編輯應用程序,已在操作系統中設置打開。
預先感謝您。
我怎樣才能找出給定文件的MIME類型或內容類型? 我無法使用後綴,因爲該文件可能會被重命名。找出MIME類型和相關應用程序使用Qt
可能增加將他們歸類爲JPG,GIF,PNG等是圖像文件,並且可以通過編輯應用程序,已在操作系統中設置打開。
預先感謝您。
什麼平臺?在* nix上,你應該參考程序file
是如何實現的,它基於一些啓發式方法,包括檢查文件的前幾個字節(許多文件格式以固定標題開頭,包括許多圖像格式)。
如果你在Windows中,* nix中file
命令可能仍然是有益的,即使你不能直接重複使用它的代碼。在Windows API中也可能有一些更好的解決方案(我不是Windows程序員)。
這可以幫助,它是用C#,但我認爲你可以得到的想法。
http://kseesharp.blogspot.com/2008/04/c-get-mimetype-from-file-name.html
您可以使用某種類的從QT acccesing Windows註冊表,或直接使用Windows API從QT。
我不是一個Qt編程。
你不能,而不是從Qt內部。但是,如果您只想顯示具有正確應用程序的文件,則可以使用QDesktopServices::openUrl(),該文件包裝爲open
(Windows/OSX)和xdg-open
(Unix)。該URL也可能是本地文件(在這種情況下,使用QUrl::fromLocalFile()來構建URL)。
用於對圖像文件進行分類。對於Qt而言,僅用於圖像文件。
QByteArray imageFormat = QImageReader::imageFormat(fileName); //Where fileName - path to your file
進一步映射到的imageformat MIME類型不complicable
它看起來並不像Qt的提供這種能力呢。但是,您可能需要查看libmagic庫,它可以執行file
和其他類似命令所做的操作。假設庫被正確維護,它將隨着時間的流逝而包含新的MIME類型。從我可以告訴它是文件工具套件的一部分。在Debian系統下執行如下操作:
sudo apt-get install libmagic-dev
獲取開發庫並使用#include來使用它。
另見的超級用戶這樣一個問題:http://superuser.com/questions/274734/is-there-a-tool-that-can-determine-the-file-type-by-containing-data – 2011-04-24 17:55:49