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
  • 相关阅读:
    日志工具——slf4j
    统一建模语言——UML
    Java基础——网络编程
    Java基础——语法基础
    Java基础——NIO(二)非阻塞式网络通信与NIO2新增类库
    Java基础——NIO(一)通道与缓冲区
    动态加载script文件的两种方法
    asp.net 通用的连接数据库实例代码
    Nginx用户认证配置方法详解(域名/目录)
    js冒泡法和数组转换成字符串示例代码
  • 原文地址:https://www.cnblogs.com/pied/p/5318337.html
Copyright © 2011-2022 走看看