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();
        });
    }
  • 相关阅读:
    H.264---(I、P、B帧)(I帧和IDR帧)(DTS和PTS、time_base)
    H.264---帧内预测编码和帧间预测编码
    H.264---编码架构分析
    视频编码技术---可分级视频编码
    Linux 进程通信
    mac 下使用 git && SourceTree
    mac 下安装 mongodb,Robommongodb
    mac 下 nginx的安装
    VPD(Virtual Private Database) 简单演示
    connect by prior start with
  • 原文地址:https://www.cnblogs.com/judes/p/12859318.html
Copyright © 2011-2022 走看看