【问题标题】:Find out the mime type and associated applications with Qt使用 Qt 找出 mime 类型和相关应用程序
【发布时间】:2011-04-21 22:00:39
【问题描述】:

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

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

提前谢谢你。

【问题讨论】:

    标签: c++ qt mime-types


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

    这可能会有所帮助,它适用于 C#,但我认为您可以理解。

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

    您可以使用某种类从 qt 访问 Windows 注册表或直接从 qt 使用 Windows API。

    我不是qt程序员。

    【讨论】:

      【解决方案3】:

      你不能,不是来自 Qt。

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

          sudo apt-get install libmagic-dev
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-06-23
            • 1970-01-01
            • 1970-01-01
            • 2011-04-12
            • 2012-02-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多