QT 下载文件
2015-05-28 19:52
537 查看
qt 利用http下载文件:
这里 介绍的是简单的 qt访问接口 http请求下载方法,没有进度条的,刚接触qt,方法大部分都是网上借鉴来的。如有雷同,纯属巧合。
这里实现的是 请求一个http 实现文件下载:
头文件定义:
这里在做下载时 实际情况中 发现一个问题 就是完成以后 一定要记得 flush close 文件指针 否则 文件始终是0KB,但是 我在做下载时 遇到过虽然没有 close但是 关闭程序后 文件自动刷新 两个文件 一个可以 一个不可以 他们的区别就是 size 这里引发猜想是不是文件 偏大的可以自己实现刷新缓存,纠结了一上午,哪位大神知道 可以指点指点。
这里 介绍的是简单的 qt访问接口 http请求下载方法,没有进度条的,刚接触qt,方法大部分都是网上借鉴来的。如有雷同,纯属巧合。
这里实现的是 请求一个http 实现文件下载:
头文件定义:
QFile *avatorFile;//文件指针 QNetworkReply *avatorReply; QNetworkAccessManager *avatorManager; void httpDowload(); void httpDowloadFinished();
//下载文件之前先在本地创建一个文件 QDir file;//文件夹 QString fileStr=QString("text/%1/").arg(text); QString fileName=fileStr+"text.jpg"; //判断文件夹是否存在 不存在创建 if(!file.exists(fileStr)){ file.mkpath(fileStr); } avatorFile=new QFile(fileName); //判断文件是否可写入 不可写删除 指针赋值0 if(!avatorFile->open(QIODevice::WriteOnly)){ delete avatorFile; avatorFile=0; return; }
//开始请求 下载文件 QUrl serviceUrl = QUrl("http://www.baidu.com"); avatorManager = new QNetworkAccessManager(this); //get方式请求 如需加密用post avatorReply=avatorManager->get(QNetworkRequest(serviceUrl)); connect(avatorReply,SIGNAL(readyRead()),this,SLOT(httpDowload()));//数据写入 connect(avatorReply,SIGNAL(finished()),this,SLOT(httpDowloadFinished()));//请求完成
//将下载的文件数据写入到文件指针中 void HttpProvider::httpDowload(){ if(avatorFile){ avatorFile->write(avatorReply->readAll()); } }
//请求完成 文件下载成功 void HttpProvider::httpDowloadClientFinished(){ //刷新文件 avatorFile->flush(); avatorFile->close(); avatorFile=0; }
这里在做下载时 实际情况中 发现一个问题 就是完成以后 一定要记得 flush close 文件指针 否则 文件始终是0KB,但是 我在做下载时 遇到过虽然没有 close但是 关闭程序后 文件自动刷新 两个文件 一个可以 一个不可以 他们的区别就是 size 这里引发猜想是不是文件 偏大的可以自己实现刷新缓存,纠结了一上午,哪位大神知道 可以指点指点。
相关文章推荐
- Qt信号与槽机制源码分析
- Qt和Cocoa混合编程
- Ubuntu+Qtcreator2.4.1+opencv2.4.9+安装
- genQtProFile.py
- Qt静态库的下载和安装配置
- Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item
- QTP破解方法
- Ubuntu下Qt编译报错:“make: g++:命令未找到”
- Qt界面显示图片,Qt与opencv的联合运用
- QT实现截屏功能
- QT 中 事件处理转移
- Qt画图QCustomPlot之安装篇
- 关于在Qt里编译生成静态库文件
- opencv与Qt的结合使用
- QT拾遗
- 信号槽链接触发写销毁
- Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)
- qt下sqlite数据库的应用(二)
- Qt 安装事件过滤器installEventFilter
- qt5中文乱码解决方式