Qt5.8用FTP实现文件上传和下载(带进度条)

Qt5.8用FTP实现文件上传和下载(带进度条)

本文基于Qt5.8利用FTP协议实现文件的上传和下载。 本人所使用的FTP服务器端的操作系统为Linux(Ubuntu),编写QT代码的客户端的操作系统为Windows.

重要声明: 由于QT5.4版本之前和之后所提供的的类的差别非常大,所以请参考本文的读者确保您自己的Qt版本>=5.4。我们主要使用的类QNetWorkAccessManager从5.4版本才开始有。

FTP服务器的详细配置可在本人原创的另一篇名为“ Ubuntu16.04系统中配置FTP”的博客中查看(http://blog.csdn.net/timothy93bp/article/details/77527531)。

我的FTP服务器的用户名为peng, 密码为123456,ip地址为192.168.1.166, FTP服务器的根目录为/home/peng

  • 1. UI界面
  • 2. 修改.pro文件
  • 3. 头文件代码
  • 4. 源文件代码(上传,下载,进度条)
  • 5. FTP缺点

1. UI界面

本程序的UI界面如下:

这里写图片描述

文本编辑框中输入的是上传到服务器或者下载到本地之后,文件所要保存的名字, 该控件的objectName为“lineEdit“。”FTP上传”的按钮的objectName为“uploadButton“, “FTP下载”的按钮的objectName为“downloadButton“。

2. 修改.pro文件

首先,为了使用关于网络的类,我们首先要在.pro文件中加入一行:QT += network

//FTP.pro的内容

#-------------------------------------------------
#
# Project created by QtCreator 2017-08-25T14:00:00
#
#-------------------------------------------------

QT       += core gui
QT       += network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = FTP
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which 
  • 16
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Qt5中,可以使用QNetworkAccessManager类和QNetworkRequest类来实现FTP文件上传。下面是一个简单的示例代码: ```cpp #include <QCoreApplication> #include <QFile> #include <QUrl> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建一个QFile对象 QFile file("test.txt"); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "文件打开失败"; return 1; } // 创建一个QNetworkAccessManager对象 QNetworkAccessManager *manager = new QNetworkAccessManager(); // 创建一个QUrl对象,指定FTP服务器的地址和文件名 QUrl url("ftp://username:password@ftpserver/test.txt"); // 创建一个QNetworkRequest对象,设置请求的url QNetworkRequest request(url); // 发送PUT请求,即上传文件 QNetworkReply *reply = manager->put(request, &file); // 等待上传完成 while (!reply->isFinished()) { QCoreApplication::processEvents(); } // 输出上传结果 if (reply->error() == QNetworkReply::NoError) { qDebug() << "文件上传成功"; } else { qDebug() << "文件上传失败:" << reply->errorString(); } // 释放资源 file.close(); reply->deleteLater(); manager->deleteLater(); return 0; } ``` 需要注意的是,FTP服务器的地址需要以ftp://开头,用户名和密码需要以username:password@的形式加在地址前面,文件名需要加在地址的最后面。在上面的示例代码中,我们上传了名为test.txt的文件FTP服务器上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值