• libcurl 通过http协议下载文件并显示下载进度


    vc6 测试工程下载地址: http://download.csdn.net/detail/mtour/8068053

    代码如下:

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream)  
    2. {  
    3.   return fwrite(ptr, size, nmemb, stream);  
    4. }   
    5.    
    6. int my_progress_func(char *progress_data,  
    7.                      double t, /* dltotal */  
    8.                      double d, /* dlnow */  
    9.                      double ultotal,  
    10.                      double ulnow)  
    11. {  
    12.   printf("%s %g / %g (%g %%) ", progress_data, d, t, d*100.0/t);  
    13.   return 0;  
    14. }  
    15.    
    16. int main(int argc, char **argv)  
    17. {  
    18.   CURL *curl;  
    19.   CURLcode res;  
    20.   FILE *outfile;  
    21.   char *url = "http://10.10.1.4/d/c00000000000039/2014-10-22/10-28-35.ps";  
    22.   char *progress_data = "* ";  
    23.    
    24.   curl = curl_easy_init();  
    25.   if(curl)  
    26.   {  
    27.     outfile = fopen("test.ps", "wb");  
    28.    
    29.     curl_easy_setopt(curl, CURLOPT_URL, url);  
    30.     curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);  
    31.     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func);  
    32.     curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);  
    33.     curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);  
    34.     curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, progress_data);  
    35.    
    36.     res = curl_easy_perform(curl);  
    37.    
    38.     fclose(outfile);  
    39.     /* always cleanup */  
    40.     curl_easy_cleanup(curl);  
    41.   }  
    42.   return 0;  
    43. }  
  • 相关阅读:
    【Eclipse导入外部包解决方案】由GoogleMap导入gms包问题引出
    新生活即将开始

    继续我的C旅程
    圣诞后
    新年
    来来回回;不知所云
    吵啊吵啊吵啊
    去海边
    休假结束
  • 原文地址:https://www.cnblogs.com/lidabo/p/6405369.html
Copyright © 2020-2023  润新知