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

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

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

【问题讨论】:

    标签: qt 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();
    • 或者,像我在这个函数中那样封装实现细节。
    猜你喜欢
    • 2014-01-30
    • 2015-09-13
    • 2014-06-10
    • 2018-12-01
    • 2014-09-28
    • 1970-01-01
    • 2011-08-02
    • 2011-04-11
    • 2014-05-19
    相关资源
    最近更新 更多