使用Qt找出mime类型和相关应用程序

时间:2011-04-21 22:00:40

标签: c++ qt mime-types

如何查找给定文件的mime类型或内容类型? 我不能使用后缀,因为文件可以重命名。

可能的添加内容将jpg,gif,png等分类为图像文件,可以通过编辑应用程序打开,这些应用程序已在操作系统中设置。

提前谢谢。

5 个答案:

答案 0 :(得分:1)

什么平台?在* nix上,你应该参考程序file如何做到这一点,它基于一些启发式方法,包括检查文件的前几个字节(许多文件格式以固定标题开头,包括许多图像格式)。

如果你在Windows上,* nix file命令可能仍然具有指导性,即使你不能直接重用它的代码。 Windows API中可能还有一些更好的解决方案(我不是Windows程序员)。

答案 1 :(得分:1)

这可能有所帮助,它与C#有关,但我认为你可以得到这个想法。

http://kseesharp.blogspot.com/2008/04/c-get-mimetype-from-file-name.html

您可以使用某种类来从qt获取Windows注册表或直接从qt使用Windows API。

我不是一名qt程序员。

答案 2 :(得分:1)

你不能,不能来自Qt。

但是,如果您只想显示具有正确应用程序的文件,则可以使用QDesktopServices::openUrl(),其中包含open(Windows / OSX)和xdg-open(Unix)。 URL也可以是本地文件(在这种情况下,使用QUrl::fromLocalFile()构建URL)。

答案 3 :(得分:0)

用于分类图像文件。对于Qt,仅适用于图像文件。

QByteArray imageFormat = QImageReader::imageFormat(fileName); //Where fileName - path to your file

进一步将imageFormat映射到mime-type并不复杂

答案 4 :(得分:0)

看起来Qt还没有提供这种功能。但是,您可能需要查看执行file和其他类似命令的libmagic库。假设库已正确维护,它将随着时间的推移包含新的MIME类型。据我所知,它是文件工具套件的一部分。在Debian系统下做类似的事情:

sudo apt-get install libmagic-dev

获取开发库并使用#include来使用它。