代码之家  ›  专栏  ›  技术社区  ›  Alexandr Crit

C++libcurl上传进度条

  •  0
  • Alexandr Crit  · 技术社区  · 10 年前

    很简单:我们使用libcurl easy接口将HUGE文件上传到在线数据存储。 我需要显示此上载的进度。我知道所有文件信息,所以基本上我必须找出发送了多少位/字节,并计算整个文件的百分比。

    我查阅了libcurl手册,但没有找到任何有关上传进度的信息,只有下载进度的信息。

    我是libcurl的新手,正在使用同事的funcs。所以我可能错过了什么。

    是否有方法使用 libcurl公司 ?

    1 回复  |  直到 10 年前
        1
  •  0
  •   dau_sama    10 年前

    检查他们的 documentation :

    出于历史和传统原因,libcurl内置了 可以打开进度表,然后使其显示 终端中的进度计。

    奇怪的是,通过设置打开进度表 CURLOPT_NOPROGRESS 至零。此选项设置为 1 默认情况下。

    然而,对于大多数应用程序,内置进度表是无用的 相反,有趣的是能够指定进度 回调。传递给的函数指针 libcurl 将被调用 以不规则的间隔显示关于当前传输的信息。

    使用设置进度回调 CURLOPT_PROGRESSFUNCTION 。然后通过 指向与此原型匹配的函数的指针:

      int progress_callback(void *clientp,
                            double dltotal,
                            double dlnow,
                            double ultotal,
                            double ulnow);
    

    如果任何输入参数未知,将传递0。这个 第一个参数,“clientp”是传递给libcurl的指针 CURLOPT_PROGRESSDATA libcurl不会碰它。