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
  • 相关阅读:
    ELK相关操作记录-运维笔记
    php执行普通shell命令
    rsync 限速同步文件
    mysql 压测工具启动报 error while loading shared libraries: libmysqlclient.so.20解决办法
    php连接SQL server 数据库测试php脚本
    mysql 5.6.24 主从配置(增加从库)
    Mysqldump参数大全(参数来源于mysql5.5.19源码)
    Linux下mysql-5.6重置root密码
    WSDL文档深入分析
    随笔
  • 原文地址:https://www.cnblogs.com/pied/p/5318337.html
Copyright © 2011-2022 走看看