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();
        });
    }
  • 相关阅读:
    oc获得设备类型
    oc代码规范
    图片下载进度
    Nsdate的各种常用操作
    学习视频
    ios 编码转换 保存文件
    免费代码托管网站
    两年JAVA程序员的面试总结
    Java 性能优化的 45 个细节
    7年Java游戏后端,被淘汰辛酸史
  • 原文地址:https://www.cnblogs.com/judes/p/12859318.html
Copyright © 2011-2022 走看看