QNetworkReply испустил uploadProgress 0 0, но завершенный сигнал испускается с задержкой - PullRequest
0 голосов
/ 27 марта 2019

Сигнал uploadProgress (qint64, qint64) испустил 0 0, но завершился (QNetworkReply *), испустил с большой задержкой.Я думаю, что сигнал испускается, когда файл загружается в некоторый промежуточный буфер, а не на удаленный сервер.Как получить реальный прогресс загрузки?

Qt 5.12, Windows 7.

QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);

QHttpPart profileIdPart;
profileIdPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"profile_id\""));
profileIdPart.setBody(GlobalsArgs::profileID.toUtf8());
multiPart->append(profileIdPart);

QHttpPart fileTypePart;
fileTypePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file_type\""));
fileTypePart.setBody(fileT.toUtf8());
multiPart->append(fileTypePart);

fileObj = new QFile(file);
QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"" + fileObj->fileName() +"\""));
imagePart.setHeader(QNetworkRequest::ContentLengthHeader, fileInfo.size());
fileObj->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
imagePart.setBodyDevice(fileObj);
fileObj->setParent(multiPart);
multiPart->append(imagePart);

QUrl url(GlobalsArgs::uploadURL + "/files/");
QByteArray headerRowName;
headerRowName.append(" Bearer " + GlobalsArgs::uploadToken);

QNetworkRequest request(url);
request.setRawHeader("Authorization", headerRowName);
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);
request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, true);

manager = new QNetworkAccessManager();
reply = manager->post(request, multiPart);
multiPart->setParent(reply);
...