本文主要介绍了Qt QFtp客户端实现上传下载文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
QNetworkAccessManager支持大多数的网络协议,比如http、ftp等,这里主要讲解QNetworkAccessManager实现的FTP客户端。
QNetworkReply类包含使用QNetworkAccessManager发送的请求的数据和头部。与QNetworkRequest类似,它包含一个URL和标题(包括解析的和原始的形式),一些关于应答状态和应答本身内容的信息。
QNetworkRequest类持有一个要用QNetworkAccessManager发送的请求,QNetworkRequest是网络访问API的一部分,是保存通过网络发送请求所需信息的类。它包含一个URL和一些可用于修改请求的辅助信息。
首先弹出一个文件保存对话框,我在ftpserver中提前放好了一个data.txt的文件,然后设置QURL,设置用户名,密码,端口,采用get方法。有数据来后会收到readyRead信号,然后往文件中写入数据就行了。
void WFtp::on_btnDownLoad_clicked()
//选择一个保存路径
//设置打开路径
QString filePath = "F://";
//对话框标题
QString dlgTitle="保存文件";
//文件过滤器
QString filter="文本文件(*.txt)";
//打开对话框
QString fileName=QFileDialog::getSaveFileName(this,dlgTitle,filePath,filter);
g_file.setFileName(fileName);
g_file.open(QIODevice::WriteOnly);
QString str = ui->lineEdit->text() + "data.txt";
QUrl url(str);
url.setPort(21);
url.setUserName(ui->leUser->text());
url.setPassword(ui->lePasswd->text());
QNetworkRequest request(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);
void WFtp::slotRead()
g_file.write(m_reply->readAll());
上传代码:
首先弹出一个文件选择对话框,选择要上传的文件,读取文件的数据到byte变量中,设置传入到ftp sever中的文件名叫upLoad.txt,最后使用put方式上传文件。
//选择一个保存路径
//设置打开路径
QString filePath = "F://";
//对话框标题
QString dlgTitle="保存文件";
//文件过滤器
QString filter="文本文件(*.txt)";
//打开对话框
QString fileName=QFileDialog::getOpenFileName(this,dlgTitle,filePath,filter);
g_file.setFileName(fileName);
g_file.open(QIODevice::ReadOnly);
QByteArray byte = g_file.readAll();
g_file.close();
QString str = ui->lineEdit->text() + "upLoad.txt";
QUrl url(str);
url.setPort(21);
url.setUserName(ui->leUser->text());
url.setPassword(ui->lePasswd->text());
QNetworkRequest request(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, &QNetworkReply::downloadProgress, this, &WFtp::slotDownloadProgress);
到此这篇关于Qt QFtp客户端实现上传下载文件的文章就介绍到这了,更多相关Qt QFtp上传下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
C++实现特殊矩阵的压缩存储算法2022-08-08
C++函数模板与类模板相同与不同介绍2022-08-08
C++ accumulate函数详细介绍和具体案例2022-08-08
C语言指针和数组深入探究使用方法2022-08-08
基于QT实现文件上传和下载功能2022-08-08
C++ accumulate函数详细介绍和具体案例2022-08-08
C++中 Sort函数详细解析2022-08-08
QT实现文件传输功能2022-08-08
美国设下计谋,用娘炮文化重塑日本,已影响至中国2021-11-19
时空伴随者是什么意思?时空伴随者介绍2021-11-09
工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终2021-11-05
2022年放假安排出炉:五一连休5天 2022年所有节日一览表2021-10-26
电脑版 - 返回首页
2006-2023 脚本之家 JB51.Net , All Rights Reserved.
苏ICP备14036222号