zoukankan      html  css  js  c++  java
  • qt 断点续传例子

    //功能:    根据一个URL地址将数据保存到指定路径下,支持断点续传
    //参数:    url            --需要访问的URL地址
    //         SavePath       --需要保存的路径
    //DownedSize 已经下载的大小
    // totalSize 文件总大小
    //返回值:  ture --成功 false --失败
    bool HttpGet::DownFile(const QUrl &url,const QString &SavePath,int DownedSize,int totalSize)
    { //创建父文件夹
      QString curPath=QApplication::applicationDirPath()+"/Files";
      if(!QDir(curPath).exists())
      {
       QDir photoDir;
       photoDir.mkdir(curPath);
      }
     //创建子文件夹
        if(!QDir(SavePath).exists())
        {
         QDir photoDir;
         photoDir.mkdir(SavePath);
        }
        QNetworkRequest qheader;
        qheader.setUrl(url);
        QString Range="bytes "+QString::number(DownedSize)+"-";//告诉服务器从DownedSize起开始传输
        qheader.setRawHeader("Range",Range.toAscii());

            QNetworkAccessManager manager;
            //参考 http://www.qtforum.org/article/31355/qnetworkaccessmanager-using-custom-headers-to-download-a-file.html
            QEventLoop loop;
            //QNetworkReply *reply = manager.get(QNetworkRequest(url));
            QNetworkReply *reply = manager.get(QNetworkRequest(qheader));
            QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
            loop.exec();
            QFileInfo fileInfo=url.path();
            QFile file(SavePath+fileInfo.fileName());
            file.open(QIODevice::WriteOnly);
            file.write(reply->readAll());
            delete reply;
            return true;
    }

    使用

      getter.DownFile(QUrl(FileUrl),QString(CurrentPath),0,FileSize);
      QObject::connect(&getter, SIGNAL(finished()),  SLOT(quit()));

  • 相关阅读:
    小组自评、互评及反馈
    "一个程序员的生命周期"读后感
    阅读《构建之法》第10-12章
    阅读《构建之法》第8,9,10章
    冒泡算法程序分析树的评论
    1014 C语言文法定义与C程序的推导过程
    0917 实验一词法分析程序
    0909 我与编译原理不得不说的秘密
    复利计算器4
    复利及单利计算
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175678.html
Copyright © 2011-2022 走看看