我怎样才能找出给定文件的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