如何在 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 类型?的主要内容,如果未能解决你的问题,请参考以下文章