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()));

  • 相关阅读:
    IDEA中写xml配置文件的时候没有代码提示
    Spring事务中的readonly
    解决IDEA项目名称无下标蓝色小方块
    【24小时内第四更】为什么我们要坚持写博客?
    .Net架构篇:实用中小型公司支付中心设计
    .NetCore外国一些高质量博客分享
    .Net业务搭配实用技术栈
    .NetCore实践爬虫系统(一)解析网页内容
    APM实践目录
    docker环境部署
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175678.html
Copyright © 2011-2022 走看看