Qt之FTP的上传下载(代码实现)
2016-08-13 15:16
495 查看
FTP服务器实现是我整个智能监控系统的一部分,所以在这里记录。
实现并不是很难,大家一起学习看看。
我用的是腾讯云,在此感谢腾讯的校园计划。
整个UI就是两个按钮,一个上传,一个下载。
看看界面,
非常简单的。。。。
在此实现的FTP包括两个类,一个是界面类,一个是Ftp实现的类,
至此qt的FTP客户端就完成了
欢迎各位同学一起来交流,邮箱:dearbigboy@163.com.
我的近期目标是智能监控系统的实现。
实现并不是很难,大家一起学习看看。
我用的是腾讯云,在此感谢腾讯的校园计划。
整个UI就是两个按钮,一个上传,一个下载。
看看界面,
非常简单的。。。。
在此实现的FTP包括两个类,一个是界面类,一个是Ftp实现的类,
widget.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<client.h> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); FtpCLient client; private slots: void on_pushButton_clicked(); void on_pushButton_2_clicked(); private: Ui::Widget *ui; }; #endif // WIDGET_H
widget.cpp
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); client.FtpSetUserInfor("userFtpName", "userFtpPwd"); client.FtpSetHostPort("userHost"); } Widget::~Widget() { delete ui; } void Widget::on_pushButton_clicked() { client.FtpPut("F:\\this_qt\\ftp\\image\\4.jpg", "3.jpg"); } void Widget::on_pushButton_2_clicked() { client.FtpGet("1.jpg", "F:\\this_qt\\ftp\\image\\2.jpg"); }
client.h
#ifndef FTPCLIENT_H #define FTPCLIENT_H #include <QObject> #include <QFile> #include <QNetworkRequest> #include <QNetworkAccessManager> #include <QUrl> #include <QNetworkReply> #include <QByteArray> #include <QMessageBox> #include <QFileInfo> #include <QDir> class FtpCLient:public QObject { Q_OBJECT protected slots: void finished(QNetworkReply * reply); public: FtpCLient(); void FtpGet(QString sor, QString dev); void FtpPut(QString source, QString dev); void FtpSetUserInfor(QString user, QString pwd); void FtpSetHostPort(QString str, int port =21); private: QFile * m_pFile; QNetworkReply *m_pReply; QNetworkAccessManager * m_pManager; QUrl * m_pUrl; }; #endif // FTPCLIENT_H
client.cpp
#include "client.h" FtpCLient::FtpCLient() { m_pManager = new QNetworkAccessManager(); m_pUrl = new QUrl(); m_pUrl->setScheme("ftp"); connect(m_pManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(finished(QNetworkReply *))); } void FtpCLient::finished(QNetworkReply * reply) { m_pFile->write(reply->readAll()); m_pFile->flush(); m_pFile->close(); reply->deleteLater(); } //设置FTP服务器用户名和密码 void FtpCLient::FtpSetUserInfor(QString user, QString pwd) { m_pUrl->setUserName(user); m_pUrl->setPassword(pwd); } //设置地址和端口 void FtpCLient::FtpSetHostPort(QString str, int port ) { m_pUrl->setHost(str); m_pUrl->setPort(port); } //下载文件 void FtpCLient::FtpGet(QString sor, QString dev) { QFileInfo info; info.setFile(dev); m_pFile = new QFile(info.filePath()); m_pFile->open(QIODevice::Append|QIODevice::WriteOnly); m_pUrl->setPath(sor); m_pReply = m_pManager->get(QNetworkRequest(*m_pUrl)); } //上传文件 void FtpCLient::FtpPut(QString source, QString dev) { QFile file(source); file.open(QIODevice::ReadOnly); QByteArray data = file.readAll(); m_pUrl->setPath(dev); m_pManager->put(QNetworkRequest(*m_pUrl), data); }
至此qt的FTP客户端就完成了
欢迎各位同学一起来交流,邮箱:dearbigboy@163.com.
我的近期目标是智能监控系统的实现。
相关文章推荐
- Qt实现FTP的上传和下载的实例代码
- 利用Java 代码创建ftp客户端并实现上传下载等功能
- qt5集成libcurl实现tftp和ftp的方法之四:实现ftp文件上传和下载
- hbuilder 连接到ftp实现代码上传下载功能
- JAVA中使用FTPClient实现文件上传下载实例代码
- 使用struts2实现上传下载功能(附代码)。类似于ftp服务器。不止局限于本机的上传下载,其他机器也可使用此功能,服务器似的功能
- Linux下使用Shell脚本实现ftp的自动上传下载的代码小结
- python ftp 按目录结构上传下载的实现代码
- JAVA中使用FTPClient实现文件上传下载实例代码
- Linux下使用Shell脚本实现ftp的自动上传下载的代码小结 【转】
- 关于c#连接ftp进行上传下载实现原理及代码
- ftp 实现文件的上传下载以及列出文件列表Java代码
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- java+jsp代码实现从FTP服务器上传下载文件
- qt5集成libcurl实现tftp和ftp的方法之二:实现tftp文件上传和下载
- Linux下使用Shell脚本实现ftp的自动上传下载的代码小结
- ftp 实现文件的上传下载以及列出文件列表Java代码(未测试)
- Java代码使用FTPClient实现ftp文件上传下载和删除的功能
- Qt5.8用FTP实现文件上传和下载(带进度条)