如何在 Qt 中获取文件的 MIME 类型?

Posted

技术标签:

【中文标题】如何在 Qt 中获取文件的 MIME 类型?【英文标题】:How to get the MIME type of a file in Qt? 【发布时间】:2011-04-20 07:12:12 【问题描述】:

有没有办法在 Qt 中获取文件的 MIME 类型?

我正在编写一个需要查找给定文件的 MIME 类型的应用程序。

【问题讨论】:

【参考方案1】:

为此,您需要使用 3rd 方库,Qt 本身不支持 mime 类型的猜测。在 Linux/Unix 上,您可以使用 libmagic。

【讨论】:

完美 - 这正是我所希望的。 这不再是真的。 Qt 现在提供 mime 类型查找。【参考方案2】:

Qt 5 增加了对 MIME 类型的支持:

http://doc.qt.io/qt-5/qmimedatabase.html

QString path("/home/my_user/my_file");
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
    QMimeDatabase db;
    QMimeType type = db.mimeTypeForFile(path);
    qDebug() << "Mime type:" << type.name();
#endif

另见:http://doc.qt.io/qt-5/qmimetype.html

【讨论】:

Qt5 包可以很容易地向后移植到 Qt4。只需将 Qt5 源代码中的 mimetypes 和标准路径下的所有文件编译到库中或与您的应用程序一起编译。如果源代码来自 Qt 5.5+,我相信需要进行一些修改。【参考方案3】:
#include <QMimeDatabase>  

QString mimeType( const QString &filePath ) return QMimeDatabase().mimeTypeForFile( filePath ).name(); 

【讨论】:

QString mime = QMimeDatabase().mimeTypeForFile(path).name(); 或者,像我在这个函数中那样封装实现细节。

以上是关于如何在 Qt 中获取文件的 MIME 类型?的主要内容,如果未能解决你的问题,请参考以下文章

在ionic2中上传之前如何获取文件名和mime类型?

Laravel 5 - 从文件扩展名中获取 MIME 类型

如何获取 Office 文档的子类型 MIME,而不是在 Tika 中获取 OOXML

Qt中如何获取剪切板中的内容

从文件扩展名中获取 MIME 类型

从文件扩展名中获取 MIME 类型