使用libcurl上传下载文件,如何在下载过程中暂停或取消上传或下载?

使用开源的libcurl库可以很方便的实现文件的上传或下载,libcurl支持FTP、HTTP等常见的多种协议。当使用libcurl的接口启动上传或下载任务后,如何暂停或者取消上传或下载呢?

下面的函数设定传输进度的回调函数

curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, ProgressCallback);

函数的实现如下:

  1. int HttpDownloadDomain::ProgressCallback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
  2. {
  3.     HttpDownloadDomain* dd = (HttpDownloadDomain*)clientp;
  4.     if ( dltotal > -0.1 && dltotal < 0.1 )
  5.     {
  6.         return 0;
  7.     }
  8.     int nPos = (int) ( (dlnow/dltotal)*100 );
  9.     //通知进度条更新下载进度
  10.     std::cout << “dltotal: “ << (long)dltotal << ” —- dlnow:” << (long)dlnow << std::endl;
  11.     if(*dd->cancel_)
  12.     {
  13.         //1. 返回非0值就会终止 curl_easy_perform 执行
  14.         return -2;
  15.     }
  16.     return 0;
  17. }

当需要暂停或取消上传/下载时,设定ProgressCallback函数返回非零值即可。

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享
评论 抢沙发
CPPKU的头像-cppku-C++库

昵称

取消
昵称表情代码图片