QT之HTTP下载获取文件大小信息
在QT中,我们使用http下载时,希望在下载之前获取到文件大小或者其它信息怎么办?(PS:相关信息还需要服务器支持,如果你不清楚有哪些相关HTTP头信息,可以通过抓包工具查看下。)没关系,下面我教大家,上代码。
void getFileInfoSize()
{
QNetworkAccessManager manager;
QNetworkRequest request;
request.setUrl(qUrl);
QNetworkReply* headReply = manager.head(request);
connect(headReply, SIGNAL(finished()), this, SLOT(onGetFileInfoSize()));
}
void onGetFileInfoSize()
{
QString fileSize;
if (headReply->hasRawHeader(QString("Content-Length").toUtf8()))
{
fileSize=headReply->rawHeader(QString("Content-Length").toUtf8());
}
//这里fileSize就是我们想要的文件大小,或者其它HTTP头信息,都可以根据类似处理。如下图通过抓包工具获取的HTTP头信息。
}
比如我还想知道文件名称,可以这样:(PS:再次强调,这里需要你的服务器是否支持)很显然通过抓包工具可以看到,我这里是支持获取文件的名称。
QString fileName;
if (headReply->hasRawHeader(QString("filename").toUtf8()))
{
fileName= headReply->rawHeader(QString("filename").toUtf8());
}
通过上面的例子,不知各位是否理解了,没理解的,可以留言哦,我看到留言后,会回复的。如果有讲得不对的地方,大家指出来哈!一起分享一起交流