Название: Получить размер файла по ссылке
Отправлено: carhun от Июнь 09, 2013, 09:15
Доброго времени суток. Подскажите пожалуйста могу ли я получить только размер файла без его скачивания? Пробовал делать вот так, но в этом случаи я так понимаю, что оно его сразу и скачивает, а мне это надо делать позже: (Код написан просто для теста, так что не ругайте) QString sUrl("https://github.com/zer0fl4g/Nanomite/blob/master/Build/x64/Release/QtCore4.dll?raw=true"); QUrl url(sUrl); request.setUrl(QUrl(url));
QNetworkAccessManager* pManager= new QNetworkAccessManager(this); reply = pManager->get(request); reply->deleteLater(); connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec();
QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (reply->error()) { qDebug() << reply->errorString(); } if (!redirectionTarget.isNull()) { qDebug() << "redirect to: " << redirectionTarget.toUrl(); reply = pManager->get(QNetworkRequest(redirectionTarget.toUrl())); reply->deleteLater(); connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec();
redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (!redirectionTarget.isNull()) { qDebug() << "redirect to: " << redirectionTarget.toUrl(); reply = pManager->get(QNetworkRequest(redirectionTarget.toUrl())); reply->deleteLater(); connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec();
redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (!redirectionTarget.isNull()) { qDebug() << "redirect to: " << redirectionTarget.toUrl(); } } }
qDebug() << reply->header(QNetworkRequest::ContentLengthHeader).toUInt();
file.setFileName(QFileInfo(url.path()).fileName()); if (file.open(QIODevice::WriteOnly) == false) { qDebug() << "file not open"; } file.write(reply->readAll());
Название: Re: Получить размер файла по ссылке
Отправлено: mutineer от Июнь 09, 2013, 09:53
По идее если сделать head-запрос вместо get, то получишь http-заголовок, в котором может быть размер
Название: Re: Получить размер файла по ссылке
Отправлено: carhun от Июнь 09, 2013, 16:35
По идее если сделать head-запрос вместо get, то получишь http-заголовок, в котором может быть размер
Спасибо, да так заработало.
|