对LIBCURL库的二次封装记录
对LIBCURL库的移植
封装FTP文件上下载相关
过程问题记录
- 无法进行FTP文件上传
主要问题需要配置CURLOPT_UPLOAD为1才能进行上传,如果要下载需要配置为0L.
配置指定回调上传文件CURLOPT_READFUNCTION以及回调传参CURLOPT_READDATA.
文件上行回调和下行回调不能同时绑定(等待验证,目前猜测只要配置CURLOPT_UPLOAD即刻)
curl_easy_setopt(ftpPara->curlHanle, CURLOPT_UPLOAD, 1L);
curl_easy_setopt(ftpPara->curlHanle, CURLOPT_READFUNCTION, read_callback);
curl_easy_setopt(ftpPara->curlHanle, CURLOPT_READDATA, (void *)ftpPara); //绑定上传参数
- 当FTP目录存在目标文件时上传报错
目前想到的规避方法,生成一个临时文件,当这个文件下载完成后,再将其转换为最后目标文件名,每次现在前删除临时文件,再继续下载。流程如下:
封装HTTP文件上下载相关
过程问题记录
通用问题
-
-文件上下载进度条提示
需要设置CURLOPT_XFERINFOFUNCTION进度条回调和CURLOPT_XFERINFODATA参数.
设置CURLOPT_NOPROGRESS为0L. -
文件上下载进度条过程中打印为0
打印要用CURL_FORMAT_CURL_OFF_T来打印.
fprintf(stdout, "totalSize: %" CURL_FORMAT_CURL_OFF_T ", size);
int progress_callback(void *clientp,
curl_off_t dltotal,c url_off_t ultotal,c url_off_t ulnow);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFOFUNCTION,
progress_callback);