下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第QtQFtp客户端实现上传下载文件目录1.简介2.用到的主要类2.1QNetworkReply2.2QNetworkRequest3.示例3.1本地搭建一个FTP服务器。3.2示例
1.简介
实现FTP客户端有几种方式。
Qt4QFtp类Qt5QNetworkAccessManager类
QNetworkAccessManager支持大多数的网络协议,比如http、ftp等,这里主要讲解QNetworkAccessManager实现的FTP客户端。
需要添加Qt+=network模块。
2.用到的主要类
2.1QNetworkReply
QNetworkReply类包含使用QNetworkAccessManager发送的请求的数据和头部。与QNetworkRequest类似,它包含一个URL和标题(包括解析的和原始的形式),一些关于应答状态和应答本身内容的信息。
常用信号:
voiddownloadProgress(qint64bytesReceived,qint64bytesTotal)下载进度信号voiderror(QNetworkReply::NetworkErrorcode)有错误发生发出信号voidfinished()结束voidreadyRead()有数据来时会发出信号
2.2QNetworkRequest
QNetworkRequest类持有一个要用QNetworkAccessManager发送的请求,QNetworkRequest是网络访问API的一部分,是保存通过网络发送请求所需信息的类。它包含一个URL和一些可用于修改请求的辅助信息。
常用方法:
voidsetUrl(constQUrlurl)设置urlvoidsetRawHeader(constQByteArrayheaderName,constQByteArrayheaderValue)设置头部
2.3QNetworkAccessManager
常用方法:
QNetworkReply*put(constQNetworkRequestrequest,constQByteArraydata)将数据内容上载到目标请求QNetworkReply*get(constQNetworkRequestrequest)发布一个请求以获取目标请求的内容
3.示例
3.1本地搭建一个FTP服务器。
快速搭建一个本地的FTP服务器
3.2示例
我按3.1中搭建好ftp服务器。
下载代码:
首先弹出一个文件保存对话框,我在ftpserver中提前放好了一个data.txt的文件,然后设置QURL,设置用户名,密码,端口,采用get方法。有数据来后会收到readyRead信号,然后往文件中写入数据就行了。
voidWFtp::on_btnDownLoad_clicked()
//选择一个保存路径
//设置打开路径
QStringfilePath="F://";
//对话框标题
QStringdlgTitle="保存文件";
//文件过滤器
QStringfilter="文本文件(*.txt)";
//打开对话框
QStringfileName=QFileDialog::getSaveFileName(this,dlgTitle,filePath,filter);
g_file.setFileName(fileName);
g_file.open(QIODevice::WriteOnly);
QStringstr=ui-lineEdit-text()+"data.txt";
QUrlurl(str);
url.setPort(21);
url.setUserName(ui-leUser-text());
url.setPassword(ui-lePasswd-text());
QNetworkRequestrequest(url);
m_reply=m_accessManager-get(request);
connect(m_accessManager,QNetworkAccessManager::finished,this,WFtp::slotReplyFinished);
connect(m_reply,SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(slotError(QNetworkReply::NetworkError)));
connect(m_reply,QNetworkReply::downloadProgress,this,WFtp::slotDownloadProgress);
connect(m_reply,QNetworkReply::readyRead,this,WFtp::slotRead);
voidWFtp::slotRead()
g_file.write(m_reply-readAll());
}
上传代码:
首先弹出一个文件选择对话框,选择要上传的文件,读取文件的数据到byte变量中,设置传入到ftpsever中的文件名叫upLoad.txt,最后使用put方式上传文件。
//选择一个保存路径
//设置打开路径
QStringfilePath="F://";
//对话框标题
QStringdlgTitle="保存文件";
//文件过滤器
QStringfilter="文本文件(*.txt)";
//打开对话框
QStringfileName=QFileDialog::getOpenFileName(this,dlgTitle,filePath,filter);
g_file.setFileName(fileName);
g_file.open(QIODevice::ReadOnly);
QByteArraybyte=g_file.readAll();
g_file.close();
QStringstr=ui-lineEdit-text()+"upLoad.txt";
QUrlurl(str);
url.setPort(21);
url.setUserName(ui-leUser-text());
url.setPassword(ui-lePasswd-text());
QNetworkRequestrequest(url);
m_reply=m_accessManager-put(request,byte);
connect(m_accessManager,QNetworkAccessManager::finished,this,WFtp::slotReplyFinished);
connect(m_reply,SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(slotError(QNetworkReply::NetworkError)));
connect(m_reply,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北师大版初中生物八年级上学期期中复习整合教案
- 八年级上册科学《物质的分离》单元深度学习教学设计
- 本科信息管理专业《人本管理技术赋能高校图书馆服务》教学导学案
- 2025年北京市检察系统考试真题(附答案)
- 物业产品运营方案范本
- 行业数据分析报告模板数据驱动决策支持系统
- 企业许可延续承诺函(6篇)
- 2026年Q3华东市场竞品调研确认函3篇
- 专业服务团队诚信经营承诺书范文9篇
- 推动社会和谐责任承诺书4篇
- 公共伦理学(第三版)-课件
- DBJ51-015-2021 四川省成品住宅装修工程技术标准
- 虚云老和尚自述年谱
- 压铸件检验标准OK(正式发行)
- 重大危险源专项检查-操作负责人检查表
- 国家电网有限公司十八项电网重大反事故措施(修订版)
- 景观园林植物废弃物资源化利用(课堂PPT)
- 汽轮机灵活性运行-PPT课件
- 七年级数学下推理填空题专项练习
- 《教育研究方法》教学大纲
- 新建铁路施工图桥涵专业设计细则
评论
0/150
提交评论