0

次のコードを使用して、LAN 経由でいくつかのビデオ ファイルをダウンロードしています。

    QString url = "http://192.168.1.100/disk/IPCAMERA/" + downloadlist[downloadID];
    QNetworkRequest newRequest(url);
    QString concatenated = "admin:admin";
    QByteArray data = concatenated.toLocal8Bit().toBase64();
    QString headerData = "Basic " + data;
    newRequest.setRawHeader("Authorization", headerData.toLocal8Bit());
    newRequest.setUrl(url);

    reply = networkManager->get(newRequest);
    connect(reply, SIGNAL(finished()), this, SLOT(refStateChanged()), Qt::UniqueConnection);
    connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(replyDownloadProgress(qint64, qint64)));

ただし、ダウンロードは頻繁に失敗します。応答終了シグナルがトリガーされると、実際にはファイルのダウンロードは終了せず、ファイルの一部のみがダウンロードされます。これに対処するにはどうすればよいですか?

4

2 に答える 2

0

最初にファイルサイズを取得する必要があるようです

QNetworkReply* reply = manager->head(newRequest);

于 2015-07-27T01:22:40.263 に答える
0

すべての返信は Bytearray の一部です。この接続を追加する必要があります。

connect(reply, SIGNAL(readyRead()),this, SLOT(SlotReadyRead()));
void ClassName::SlotReadyRead()
{
if (_file)   //you must define QFile _file........
_file->write(_reply->readAll());
}

次に、完全なファイルをダウンロードします。幸運を!

于 2015-07-27T07:22:16.833 に答える