当QT通过HTTP协议的post数据或者文件到服务器时,如果通过表单文件来发送数据或者文件的话,就有可能需要用到文件的Content-Type。

Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。

MIME的通用结构为type/subtype

由类型与子类型两个字符串中间用'/'分隔而组成。并不允许空格存在。type 表示可以被分为复数子类的独立类型。subtype 表示细分后的每个类型。

MIME类型对大小写不敏感,但是传统写法都是小写。

下面是部分的Content-Type。

HTTP content-type 对照表

文件扩展名Content-Type(Mime-Type)文件扩展名Content-Type(Mime-Type)
.*( 二进制流,不知道下载文件类型)application/octet-stream.tifimage/tiff
.001application/x-001.301application/x-301
.323text/h323.906application/x-906
.907drawing/907.a11application/x-a11
.acpaudio/x-mei-aac.aiapplication/postscript
.aifaudio/aiff.aifcaudio/aiff

上面只是一小部分,更多的请参考:http://www.runoob/http/http-content-type.html

那QT怎样获取文件的Content-Type类型呢?

很简单,使用QMimeDatabase这个类就可以了。

QMimeDatabase db;
QMimeType subFileMimeType = db.mimeTypeForFile(fileName);  //根据前面定义的文件名(含后缀)
QString fileMimeType = mime.name();  //使用name()将MimeType类型转为字符串类型

具体更多方法可以参考官方文档。 

参考文献:

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

http://www.runoob/http/http-content-type.html

 

更多推荐

QT获取文件类型的Content-Type(MIME Type)