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());

}

QT之HTTP下载获取文件大小信息_第1张图片

通过上面的例子,不知各位是否理解了,没理解的,可以留言哦,我看到留言后,会回复的。如果有讲得不对的地方,大家指出来哈!一起分享一起交流

你可能感兴趣的:(QT之HTTP下载获取文件大小信息)