• 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
  • 相关阅读:
    体重档案应用客户端源码
    高仿美团应用客户端项目源码
    Aisen仿新浪微博客户端项目源码
    高仿百度传课应用客户端源码iOS版
    iOS高仿城觅应用客户端项目(开发思路和代码)
    一个妹子图应用客户端源码
    扎根找房子应用源码项目
    【UI集合】- 自定义搜索框
    【OC基础】- 简介
    【2015、01】追赶AND改变
  • 原文地址:https://www.cnblogs.com/pied/p/5318337.html
Copyright © 2020-2023  润新知