Qt从网络读取数据写入本地二进制文件

来源:互联网 发布:idea java文件 蓝色j 编辑:程序博客网 时间:2024/05/23 10:15

发送请求:

QNetworkRequest request(url);if (m_ReqQueue.isEmpty()) {m_NetAccessManager.get(request);}m_ReqQueue.append(request);

m_ReqQueue是一个队列,没有实际意义。


接收数据在回调中:

QFile tmpFile(tmpFilePath);tmpFile.open(QIODevice::WriteOnly);QDataStream ds(&tmpFile);QByteArray bytes = reply->readAll();ds.writeRawData(bytes,bytes.length());tmpFile.close();emit fileReady(tmpFilePath);clearCache();if (!m_ReqQueue.isEmpty()) {m_ReqQueue.removeFirst();if (!m_ReqQueue.isEmpty()) {QNetworkRequest request = m_ReqQueue.first();m_NetAccessManager.get(request);}}

要说的是:必须用QDataStream::writeRawData,这个用来写裸数据。writeBytes是不行的,它会在裸数据前写一个长度标记。

参考博客:http://blog.163.com/qimo601@126/blog/static/15822093201321104959456/

原创粉丝点击