zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt开源网络库[13]-断点续传下载

Qt网络开源下载 13 断点续传
2023-06-13 09:17:29 时间

主要更新内容:添加了断点续传下载功能。

  程序异常退出或网络中断,不再需要重新下载文件了,在断点处重新下载即可。

1. 断点续传下载

  默认开启断点续传下载功能,即当程序异常退出时,再次运行会接着从已下载的位置下载。   需要注意的是:如果服务器不支持断点续传功能,则每次下载都是从头开始下载。

参数

解释

enabled

开启/关闭断点续传下载

HttpRequest &enabledBreakpointDownload(bool enabled = true);

  文件下载进度的响应回调/信号槽,回调传递的参数分别是已保存的文件字节数和文件总字节大小。

HttpRequest &onFileDownloadProgress(const QObject *receiver, const char *method);
HttpRequest &onFileDownloadProgress(std::function<void (qint64, qint64)> lambda);

2. 例子

client.get("http://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.0/6.0.3/single/qt-everywhere-src-6.0.3.tar.xz")
      .download() // 启用自动设置文件名字 => qt-everywhere-src-6.0.3.tar.xz
      .enabledBreakpointDownload() // 启用断点续传下载
      .onFileDownloadProgress([](qint64 recv, qint64 total) {
            // 获取文件下载进度
            qDebug().nospace() << (100 * qreal(recv)/total) << "%";
       })
      .onDownloadSuccess([](QString fileName) {
            // 下载成功
            qDebug() << "Download completed: " << fileName;
       })
      .onDownloadFailed([](QString error) {
            // 下载失败
            qDebug() << "Download failed: " << error;
       })
      .exec();

3. 代码地址

https://github.com/aeagean/QtNetworkService