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();
        });
    }
  • 相关阅读:
    8天学通MongoDB(实际操作版)——第九天 构建学习型部署环境
    构建Ubuntu Server试验环境
    8天学通MongoDB(实际操作版)——第一天 基础入门
    《JAVA与模式》之适配器模式
    wsdl
    Axis2 Fault: Transport out has not been set
    诺基亚E63常见设置指南
    java面试题总结
    R400 安装XP后 ati2dvag蓝屏解决办法
    深入理解Java多态性
  • 原文地址:https://www.cnblogs.com/judes/p/12859318.html
Copyright © 2011-2022 走看看