2012-04-18 2 views

ответ

13

Предполагая, что вы используете QNetwork и загрузить это HTTP GET вам нужно будет сделать следующее:

  1. Использование запроса на голову, чтобы получить размер файла (Content-Length) и проверьте сервер поддерживает запросы Range (Accept-Ranges)
  2. Enable pipelining на GET запросы
  3. Установите Range заголовок на основе размера содержимого

Чтобы включить HTTP конвейерную на ваши запросы, установив атрибут HttpPipeliningAllowedAttribute:

QNetworkRequest req(url); 
req.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true); 

Установить заголовки диапазон:

req.setRawHeader("Range", "bytes=0-499"); 
+0

Я пытался выяснить размер файла, используя следующий код, но не повезло. Пожалуйста, дайте мне знать, что с ним не так. \t QNetworkAccessManager * mngr = new QNetworkAccessManager(); \t QNetworkRequest rqst (url); \t QNetworkReply * rply = mngr-> head (rqst); \t int length = rply-> header (QNetworkRequest :: ContentLengthHeader) .toInt(); – user1111

+0

Запрос не блокирует, вам нужно дождаться сигнала 'QNetworkAccessManager :: finished' или' QNetworkReply :: finished' (или 'QNetworkReply :: metaDataChanged' для GET), прежде чем вы сможете получить доступ к заголовкам HTTP. Пожалуйста, прочитайте [документацию для QNetworkAccessManager] (http://qt-project.org/doc/qt-4.8/qnetworkaccessmanager.html#details) или посмотрите на это [учебное пособие] (http://www.developer.nokia .com/сообщество/Wiki/Creating_an_HTTP_network_request_in_Qt_using_QNetworkAccessManager, _QNetworkRequest, _QNetworkReply). –

+0

Когда я указываю неправильный URL (например: «http://10.70.22.200:8080/Install_T.msi» вместо «http://10.70.22.200:8080/Install_Test.msi»), размер заголовка показывает некоторое значение (в этом случае 990) {size = answery-> header (QNetworkRequest :: ContentLengthHeader) .toLongLong();} Когда я указываю неправильный URL, я ожидал, что заголовок будет равен нулю, так как файл не существует. Таким образом, я не могу проверить, существует ли файл, прежде чем продолжить загрузку файла. – user1111

Смежные вопросы