zoukankan      html  css  js  c++  java
  • QNetworkAccessManager 实现的 ftp 上传

    使用 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
  • 相关阅读:
    鸡啄米vc++2010系列9(对话框控件的Tab顺序)
    鸡啄米vc++2010系列8(对话框:为控件添加消息处理函数)
    鸡啄米vc++2010系列7(对话框:创建对话框类和添加控件变量)
    鸡啄米vc++2010系列6(对话框添加控件)
    鸡啄米vc++2010系列5( 对话框:创建对话框模板和修改对话框属性)
    鸡啄米vc++2010系列4(消息机制)
    鸡啄米vc++2010系列3(MFC应用程序框架分析)
    鸡啄米vc++2010系列2(项目文件分析)
    鸡啄米VC++2010系列1(解决方案与工程)
    opencv2.3.1在vs2010上的配置
  • 原文地址:https://www.cnblogs.com/pied/p/5318337.html
Copyright © 2011-2022 走看看