zoukankan      html  css  js  c++  java
  • Qt使用QNetworkAccessManager获取FTP文件函数

    #include <QNetworkAccessManager>
    #include <QUrl>
    #include <QNetworkReply>
    #include <QNetworkRequest>
    #include <QFile>
    void getFtpImg(QString ftpFilePath, QString curFileName)
    {
        QNetworkAccessManager* myNetworkManager = new QNetworkAccessManager(this);
        QNetworkRequest myNetworkRequest;
        QNetworkReply *myNetworkReply;
        QFile* downloadedFile = new QFile("./"+curFileName);
        downloadedFile->open(QIODevice::WriteOnly);
        QUrl url;
        url.setScheme("ftp");
        url.setUserName(config.getSet()->value("FTP_USER_NAME").toString());
        url.setPassword(config.getSet()->value("FTP_PASS_WORD").toString());
        url.setHost(config.getSet()->value("FTP_HOST").toString());
        url.setPort(config.getSet()->value("FTP_PORT").toInt());
        url.setPath(ftpFilePath);
        Mymethod::record("try to download file by:"+url.toString(),PRINT_INFO);
        myNetworkRequest.setUrl(url);
        myNetworkReply = myNetworkManager->get(myNetworkRequest);
        QObject::connect(myNetworkReply,&QNetworkReply::readyRead,[=]{
            downloadedFile->write(myNetworkReply->readAll());
        });
        QObject::connect(myNetworkManager,&QNetworkAccessManager::finished,[=]{
            if(NULL==myNetworkReply)
            {
                Mymethod::record(getCodeLocate()+"myNetworkReply is null.",PRINT_ERR);
                return;
            }
            if(myNetworkReply->error() == QNetworkReply::NoError)
            {
                downloadedFile->close();
                Mymethod::record("download file success:"+curFileName,PRINT_INFO);
            }
            else
            {
                Mymethod::record(getCodeLocate()+QString("download file:%1 failed,err:%2").arg(curFileName).arg(myNetworkReply->errorString()),PRINT_ERR);
                downloadedFile->close();
            }
            myNetworkReply->deleteLater();
            downloadedFile->deleteLater();
            QObject::disconnect(myNetworkManager,0,0,0);
            myNetworkManager->deleteLater();
        });
    }
  • 相关阅读:
    关于c语言变量的内存分布测试程序
    常用ARM指令集及汇编_破解
    CPU读取内存0x30000000地址4个字节数据
    打印十六进制字符串查看内存地址
    JZ2440串口打印字符作为调试
    搭建Linux3.4.2内核编辑环境
    网卡驱动程序
    同步互斥阻塞
    poll机制分析[转]
    安装、配置、启动FTP、SSH或NFS服务
  • 原文地址:https://www.cnblogs.com/judes/p/12859318.html
Copyright © 2011-2022 走看看