使用 QNetworkAccessManager 从 web 检索数据:文件已下载,但 QNetworkReply::r
Retrieving data from web with QNetworkAccessManager: the file is downloaded but QNetworkReply::readAll returns null
已经
有同样的问题了,但唯一的答案没有帮助:Qt下载文件 - QNetworkAccessManager,没有获取数据
所以,我正在尝试下载一个文件:
QNetworkRequest request;
request.setUrl(QUrl(fileUrl));
QNetworkReply * reply = m_nam.get(request);
connect(reply, SIGNAL(finished()), this, SLOT(onDownloadRequestFinished()), Qt::UniqueConnection);
connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(onDownloadRequestProgress(qint64, qint64)), Qt::UniqueConnection);
在onDownloadRequestFinished
插槽中:
QNetworkReply * reply = qobject_cast<QNetworkReply *>(sender());
if (reply && reply->error() == QNetworkReply::NoError) {
Q_ASSERT(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200);
qDebug() << "reply " << reply->bytesAvailable() << reply->pos() << reply->size() << reply->isReadable() << reply->openMode() << reply->isOpen();
}
插槽打印以下内容:reply 0 0 0 true OpenMode( "ReadOnly" ) true
所以,没有数据。但是,我可以清楚地看到它确实在某处下载了一些东西。这是一个大文件,从onDownloadRequestProgress
来看,它确实下载了它。
重要说明:几乎相同的代码在同一台计算机上的另一个项目中工作。我试图找到差异,但到目前为止还没有看到。
数据在哪里?
您是否连接了 readyRead() 信号以将收到的字节写入特定文件?
我总是这样做来保存文件:
const QNetworkRequest& request = QNetworkRequest(url);
reply = qnetworkaccessmanager->get(request);
QObject::connect(reply, SIGNAL(readyRead()), this,
SLOT( readingReadyBytes() ));
然后我创建我的插槽:
void yourClass::readingReadyBytes() {
file->write(reply->read(reply->bytesAvailable()));
}
相关文章:
- 下载URL中的所有文件
- VisualStudio:使用 Suse Enterprise Server 12 SP5 时,不会下载远程库标头
- 从 C++ 上的网址下载文件
- QT:管理来自 QNetworkReply 的回复
- libcurl :显示正在运行的上传和下载速率
- 在 NVIDIA GEFORCE GTX 1050 上下载适用于 Windows 10 的 openCL 1.2
- 使用 libssh 从 SFTP 服务器下载文件并使用 C++ 将其写入 ofstream?
- 佳能SDK无法从相机下载图片
- 使用 Libcurl 库进行文件下载
- Mac os x app bundle 在下载并运行时崩溃,但在终端或更改 Info.plist 时运行良好
- QNetworkReply::done() 信号是按顺序调用还是同时调用?
- 通过boost asio iostream下载大文件的最快方法是什么?
- 下载 GPU Mats 的矢量到主机
- 有没有办法使用 mongocxx 驱动程序从 GridFS 集合的文件下载任意范围?
- 为什么URLDownloadToFile()没有下载我的文件
- 将大小限制添加到 QNetworkReply
- 下载到当前目录
- Qnetworkreply,QnetworkAccessManager- https下载文件 - 高CPU使用情况
- 使用 QNetworkAccessManager 从 web 检索数据:文件已下载,但 QNetworkReply::r
- 获取从 QNetworkReply 下载的百分比