使用 QNetworkAccessManager 实现的 ftp 上传代码。完整可用,做个备忘。
#include "mainwindow.h" #include <QDebug> #include <QObject> #include <QFile> #include <QTime> #include <QtGui> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { manager = new QNetworkAccessManager; QPushButton *btnUpload = new QPushButton("Upload"); connect(btnUpload,SIGNAL(clicked()),this,SLOT(upload2Ftp())); // QHBoxLayout *layoutMain = new QHBoxLayout; // layoutMain->addWidget(btnUpload); // centralWidget()-> setLayout(layoutMain); setCentralWidget(btnUpload); } MainWindow::~MainWindow() { } void MainWindow::upload2Ftp() { QFile txt1("./test.txt"); txt1.open(QIODevice::ReadOnly); qDebug()<<txt1.isOpen(); QByteArray by_txt=txt1.readAll(); txt1.close(); qDebug()<<by_txt.toHex(); QUrl u("ftp://192.168.1.230"); u.setPath("/opt/myapp/test.txt"); // u.setPort(21); u.setUserName("root"); u.setPassword("fa"); QNetworkReply *putReply = manager->put(QNetworkRequest(u), by_txt); connect(putReply, SIGNAL(finished()), this, SLOT(slotFinished())); connect(putReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError))); } void MainWindow::slotFinished() { QNetworkReply *reply = (QNetworkReply *)sender(); if(reply->error() == QNetworkReply::NoError) { qDebug()<<"Succed!"; } else { qDebug()<<"Check & Retry!"; } } void MainWindow::slotError(QNetworkReply::NetworkError errno) { QNetworkReply *reply = (QNetworkReply *)sender(); qDebug()<<"Network Error:"<<reply->errorString(); } //==================mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QNetworkAccessManager> #include <QUrl> #include <QNetworkRequest> #include <QNetworkReply> class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: QNetworkAccessManager *manager; private slots: void upload2Ftp(); void slotFinished(); void slotError(QNetworkReply::NetworkError errno); }; #endif // MAINWINDOW_H //=====================*.pro #------------------------------------------------- # # Project created by QtCreator 2016-03-24T16:31:39 # #------------------------------------------------- QT += core gui network TARGET = ftpDemo TEMPLATE = app SOURCES += main.cpp\ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui