繁体   English   中英

将QNetworkReply写入文件

[英]Writing a QNetworkReply to a file

我正在使用QNetworkAccessManager :: get下载文件,但与QHttp :: get不同,没有内置的方法可以将响应直接写到其他QIODevice。

最简单的方法是执行以下操作:

QIODevice* device;

QNetworkReply* reply = manager.get(url);
connect(reply, SIGNAL(readyRead()), this, SLOT(newData()));

然后在newData插槽中:

device->write(reply->readAll());

但是我不确定这是否是正确的方法,也许我错过了一些东西。

看起来很正确。 我将使用较低级别的read()write() ,而不是QByteArray ,它们不能正确支持错误处理,但QByteArray ,它看起来还不错。

您有问题吗?

在下载过程结束时,最好使用完成的信号来读取所有内容。 一个示例(删除事件循环并使用新的插槽使其异步):

    QNetworkAccessManager manager;
    QEventLoop loop;
    QNetworkReply *reply = manager.get( request );
    QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));

    loop.exec();

    QFile file( "YOUR FILE" );
    file.open(QIODevice::WriteOnly);
    file.write(reply->readAll());

    delete reply;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM