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();
        });
    }
  • 相关阅读:
    [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
    [BZOJ1066][SCOI2007]蜥蜴[最大流]
    [BZOJ2818][P2568]Gcd[欧拉函数]
    [BZOJ2208][P4306][JSOI2010]连通数[bitset优化floyd]
    [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
    [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
    [BZOJ5347]冒泡排序[思维]
    [BZOJ2875][Noi2012]随机数生成器[等比数列求和+取模]
    [bzoj2809] 派遣
    [bzoj1965] 洗牌
  • 原文地址:https://www.cnblogs.com/judes/p/12859318.html
Copyright © 2011-2022 走看看