在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());
}
通過上面的例子,不知各位是否理解了,沒理解的,可以留言哦,我看到留言后,會回復的。如果有講得不對的地方,大家指出來哈!一起分享一起交流