Russian Qt Forum
Октябрь 01, 2024, 07:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Получить размер файла по ссылке  (Прочитано 2608 раз)
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());
Записан
mutineer
Гость
« Ответ #1 : Июнь 09, 2013, 09:53 »

По идее если сделать head-запрос вместо get, то получишь http-заголовок, в котором может быть размер
Записан
carhun
Гость
« Ответ #2 : Июнь 09, 2013, 16:35 »

По идее если сделать head-запрос вместо get, то получишь http-заголовок, в котором может быть размер

Спасибо, да так заработало.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.08 секунд. Запросов: 21.