Qt5---ftp上传功能(使用组合的办法实现功能,QNetworkAccessManager自动管理分片上传,用QLoggingCategory屏蔽SSL警告)
2017-01-17 19:07
696 查看
从Qt的版本进化中可以知道,在Qt4中的QFtp类到了Qt5中已经没有了,虽然可以通过在Qt5中自己编译出QFtp,但是Qt5中提供的
这里提供一个Qt4中QFtp的源码获取方式:
QNetworkAccessManager在发送和请求网络方面有更好的兼容性和扩展性,包括ftp请求和http请求。
这里提供一个Qt4中QFtp的源码获取方式:
git clone git://code.qt.io/qt/qtftp.git git clone http://code.qt.io/qt/qtftp.git git clone https://code.qt.io/qt/qtftp.git[/code] 下面的ftp上传功实现了在有密码和无密码的情况下上传:#include <QtCore> #include <QtNetwork> #include <QDebug> class Uploader: public QObject { Q_OBJECT public: Uploader(QObject *p = 0): QObject(p){ } void start(const QString &file){ // no passwd // QUrl url("ftp://172.20.5.167/ftp.txt"); QUrl url; url.setScheme("ftp"); url.setHost("172.20.5.167"); // 这里是设置远端主机上传时的文件名,不设置则名称为本地端上传名称 url.setPath("/ftp.txt"); url.setUserName("root"); url.setPort(21); // need passwd /* QUrl url("ftp://172.20.5.167/ftp.txt"); url.setScheme("ftp"); url.setUserName("root"); url.setPort(21); */ data = new QFile(file, this); if (data->open(QIODevice::ReadOnly)) { reply = nam.put(QNetworkRequest(url), data); connect(reply, SIGNAL(uploadProgress(qint64, qint64)), SLOT(uploadProgress(qint64, qint64))); connect(reply, SIGNAL(finished()), SLOT(uploadDone())); } else qDebug() << "Oops"; } public slots: void uploadProgress(qint64 bytesSent, qint64 bytesTotal) { qDebug() << "Uploaded" << bytesSent << "of" << bytesTotal; } void uploadDone() { qDebug() << "Finished" << reply->error(); data->deleteLater(); reply->deleteLater(); } private: QNetworkAccessManager nam; QFile *data; QNetworkReply *reply; }; int main(int argc, char **argv) { QCoreApplication app(argc, argv); // 去除ftp上传时network.ssl警告 QLoggingCategory::setFilterRules("qt.network.ssl.warning=false"); Uploader u; u.start(QString("C:/Users/yicm/Qt/test.txt")); return app.exec(); } // 编译时不要漏掉下面这句 #include "main.moc"
上面程序主要注意的地方是本地端上传文件和主机端文件,理解QUrl(无密码为ftp://root@172.20.5.167.com:21):
保证ftp地址的每一个部分都设置到位。
http://blog.csdn.net/freeape/article/details/52802163
相关文章推荐
- Qt5---ftp上传功能(使用组合的办法实现功能,QNetworkAccessManager自动管理分片上传,用QLoggingCategory屏蔽SSL警告)
- 在linux shell中使用ftp命令来实现自动登陆、上传与下载
- Linux下使用Shell脚本实现ftp的自动上传下载的代码小结
- CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名
- 使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能
- 在linux shell中使用ftp命令来实现自动上传与下载
- 组合使用QT的资源管理高级功能简化开发过程
- CentOS 下使用SFTP实现网站自动生成FTP账号,实现Chroot功能
- Linux使用Shell脚本实现ftp的自动上传下载
- DOS批处理实现“自动FTP批量上传文件”功能
- 在linux shell中使用ftp命令来实现自动上传与下载
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 .
- 使用vsftpd 实现 redhat linux6.0 下的ftp服务匿名上传下载功能
- Linux使用Shell脚本实现ftp的自动上传下载
- Linux下使用Shell脚本实现ftp的自动上传下载的代码小结
- 使用Shell脚本实现ftp的自动上传下载
- Linux使用Shell脚本实现ftp的自动上传下载
- 关于Qt使用QNetworkAccessManager下载文件(实现断点续传功能)
- Linux下使用Shell脚本实现ftp的自动上传下