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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值