void FileDownLoad::start()

{

m_file = new QFile(m_filePath, this);//m_filePath下载地址

if (!m_file->open(QIODevice::WriteOnly)) {

emit result(false, tr("Write file error!\n") + m_file->errorString());

return;

}

QUrl u(m_url);

QNetworkRequest request(u);

QNetworkReply *reply = m_accessManager.get(request);

m_reply = reply;

connect(reply, SIGNAL(finished()), this, SLOT(onReplyFinished()));//处理下载结果

connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(updateDataReadProgress(qint64,qint64)));//更新下载进度

}

void FileDownLoad::onReplyFinished()

{

QNetworkReply *reply = dynamic_cast (sender());

if (!reply){

emit result(false, "reply is null!");

return;

}

if (reply->error() != QNetworkReply::NoError) {

QString errInfo = QString("errorID:%1, errorString:%2").arg(reply->error()).arg(reply->errorString());

emit result(false, errInfo);

return;

}

QByteArray data = reply->readAll();

if (!data.isEmpty()) {

int writeBytes = m_file->write(data);

m_file->flush();

if (writeBytes != data.size()) {

emit result(false, tr("Write file error\n") + m_file->errorString());

return;

}

}

// check filesize

int contentLength = reply->header(QNetworkRequest::ContentLengthHeader).toInt();

if (contentLength == 0 || m_file->size() == 0 || contentLength != m_file->size()) {

emit result(false, tr("Network error! code 400"));

return;

}

emit result(true, "");

}

linux下qt网络编程 qnetworkreply,QT网络编程之文件下载 QNetworkRequest QNetworkReply QNetworkAccessManager...相关推荐

  1. Linux下使用Java调用Hikvision设备网络SDK使用指南

    1 简介  由于在开发过程中,本来以为抓图项目会部署在Windows服务器上,但随着项目的进行发现项目需要部署在Linux系统,甚至是国产化平台银河麒麟上,但在部署时发现在国产化平台部署时出现缺包的问 ...

  2. Linux下必须知道的11个网络命令

    Linux下必须知道的11个网络命令 作者:佚名 字体:[增加 减小] 来源:互联网 时间:03-06 15:54:29 我要评论 无论你是要下载文件.诊断网络问题.管理网络接口,还是查看网络的统计数 ...

  3. Linux 下编译并安装配置 Qt

    本文介绍的是Linux 下编译并安装配置 Qt,最近准备做 Nokia 的 Symbian,Maemo 下触摸屏开发.考虑到程序的跨平台可移植性,最终选择使用 Qt 开发.相对来说,国内关于 Qt 相 ...

  4. Linux下搭建第一个区块链网络(FISCO BCOS)

    Linux下搭建第一个区块链网络(FISCO BCOS) 概述 搭建单群组FISCO BCOS联盟链 配置及使用控制台 部署及调用HelloWorld合约 概述 FISCO BCOS是由国内企业主导研 ...

  5. linux下网易云音乐无法连接网络问题的解决思路

    linux下网易云音乐无法连接网络问题的解决思路 1.当所有需要联网的音乐播放器都出现网络无法连接或者google chrome 出现代理问题,可以检查下你最近是否弄了代理. 例如: 我最近就弄了个代 ...

  6. linux qt编译命令,Linux 下编译并安装配置 Qt 全过程

    Linux 下编译并安装配置 Qt 全过程 1.获得源代码 src 官网下载地址:ftp://ftp.qt.nokia.com/qt/source/ 2009 年 10 月 1 日发布的 qt-x11 ...

  7. Linux下的静态链接库和动态链接库编程

    Linux下的静态链接库和动态链接库编程 参考: Linux下的静态链接库和动态链接库编程 - Histring - 博客园 Mac下静态库和动态库的创建和使用_C/C++_vincent2610的专 ...

  8. 南京邮电大学嵌入式系统开发实验5:嵌入式Linux下LED报警灯驱动设计及编程

    实验5  嵌入式Linux下LED报警灯驱动设计及编程 一.实验目的 理解驱动本质,掌握嵌入式Linux系统下驱动开发相关知识,包括端口寄存器访问.接口函数编写.和文件系统挂接.注册及相关应用编程等知 ...

  9. RHEL 5.4 下安装和使用 ntop 全纪录(ntop:Linux下可通过Web访问的网络流量监控工具)...

    RHEL 5.4 下安装和使用 ntop 全纪录 1. ntop介绍 Ntop是一种监控网络流量工具,用ntop显示网络的使用情况比其他一些网络管理软件更加直观.详细.Ntop甚至可以列出每个节点计算 ...

  10. linux下的C语言开发(网络编程)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 不管在Windows平台下面还是在Linux平台下面,网络编程都是少不了的.在互联网发达的今天 ...

最新文章

  1. linux用户和文件目录管理
  2. 如何攻克目标检测?百度全球顶级会议双料冠军团队有话说!
  3. 重温SQL——行转列,列转行
  4. aspects_具有Aspects的Java中的Mixin –用于Scala特性示例
  5. 动态规划(五)——0/1背包
  6. 天梯赛L2-010 排座位(并查集和\set)
  7. 能力不错的大厂高 P,为什么过不了小厂的试用期?
  8. Python关于File学习过程
  9. https openssl http2
  10. 2016-05-25 margin-right jsp获取页面流变量 文字颜色
  11. deepin系统文本编辑器
  12. 火狐浏览器播放插件Linux,Firefox浏览器带flash播放器插件
  13. Beyond Compare linux
  14. 山东农业大学/基础训练5
  15. 禁用计算机安全模式,安全模式
  16. 概率论与数理统计学习笔记——第13讲——依概率收敛的意义
  17. HDFS成员的工作机制
  18. ←机器人工程或机器人方向毕业设计汇总篇→↓2022↑
  19. #ORA-12547: TNS: 丢失连接
  20. 【软考软件评测师】2010年下案例分析历年真题

热门文章

  1. CSS滤镜(filter)
  2. 如何衡量研发效能?阿里资深技术专家提出了5组指标 1
  3. 智能家居至今未落地 究其原因是没想好怎么分蛋糕
  4. cloudera manager安装使用
  5. Android之AppWidget
  6. openssh服务以及基于ssh的双机互信配置
  7. 微软工程师主讲的SqlServer2005视频教程
  8. Oracle数据库之SQL单行函数---字符函数之TRIM
  9. Google发布Java 核心工具库——Guava 28.0
  10. 微服务架构实战篇(三):Spring boot2.0 + Mybatis + PageHelper实现增删改查和分页查询功能