Qt ftp 客户端实现

基于 Qt的 ftp客户端 代码

 

#ifndef PVFTP_H
#define PVFTP_H
 
#include "../pvcore_global.h"
#include <QObject>
#include <QFile>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkReply>
#include <QByteArray>
#include <QFileInfo>
#include <QDir>
 
/*
 *  FtpCLient client;
    client.FtpSetUserInfor("userFtpName", "userFtpPwd");
    client.FtpSetHostPort("192.168.1.88",21);
    client.FtpPut("C:\\Users\\ZD\\Desktop\\log.txt", "a.txt");
 *
 */
 
class PVCORESHARED_EXPORT FtpCLient:public QObject
{
    Q_OBJECT
protected slots:
    void finished(QNetworkReply * reply);
 
public:
    FtpCLient(QObject* parent=0);
    /**
     * @brief 下载文件
     * @param sor
     * @param dev
     */
    void FtpGet(QString sor, QString dev);
 
    /**
     * @brief 上传文件
     * @param source
     * @param dev
     */
    void FtpPut(QString source, QString dev);
 
    /**
     * @brief 设置用户名 密码
     * @param user
     * @param pwd
     */
    void FtpSetUserInfor(QString user, QString pwd);
 
    /**
     * @brief 设置地址
     * @param str
     * @param port
     */
    void FtpSetHostPort(QString str, int port =21);
 
private:
    QFile * m_pFile;
    QNetworkReply *m_pReply;
    QNetworkAccessManager * m_pManager;
    QUrl * m_pUrl;
};
#endif // PVFTP_H
 

 

 

 

#include "ftp.h"
FtpCLient::FtpCLient(QObject* parent):QObject(parent)
{
    m_pManager = new QNetworkAccessManager();
    m_pUrl = new QUrl();
    m_pUrl->setScheme("ftp");
    connect(m_pManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(finished(QNetworkReply *)));
}
 
void FtpCLient::finished(QNetworkReply * reply)
{
    m_pFile->write(reply->readAll());
    m_pFile->flush();
    m_pFile->close();
    reply->deleteLater();
    qDebug()<<"FtpCLient->finished";
}
 
 
//设置FTP服务器用户名和密码
void FtpCLient::FtpSetUserInfor(QString user, QString pwd)
{
    m_pUrl->setUserName(user);
    m_pUrl->setPassword(pwd);
}
//设置地址和端口
void FtpCLient::FtpSetHostPort(QString str, int port )
{
    m_pUrl->setHost(str);
    m_pUrl->setPort(port);
}
//下载文件
void FtpCLient::FtpGet(QString sor, QString dev)
{
    QFileInfo info;
    info.setFile(dev);
    m_pFile = new QFile(info.filePath());
    m_pFile->open(QIODevice::Append|QIODevice::WriteOnly);
    m_pUrl->setPath(sor);
    m_pReply = m_pManager->get(QNetworkRequest(*m_pUrl));
}
//上传文件
void FtpCLient::FtpPut(QString source, QString dev)
{
    QFile file(source);
    file.open(QIODevice::ReadOnly);
    QByteArray data = file.readAll();
 
    m_pUrl->setPath(dev);
    m_pReply = m_pManager->put(QNetworkRequest(*m_pUrl), data);
    qDebug()<<"FtpPut"<<source<<dev<<m_pReply->errorString()<<m_pReply->error();
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土拨鼠不是老鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值