CURL上传文件,CURLOPT_XFERINFOFUNCTION 回调函数中总大小为0

蠓虫带着秤砣飞 2016-10-08 10:28:44
CURLOPT_INFILESIZE设定了文件大小,但是在CURLOPT_XFERINFOFUNCTION 指定的回调函数中,总大小一直是0.
求教解决办法。
...全文
1553 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-10-09
  • 打赏
  • 举报
回复
楼主确实心有灵犀。
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
提醒:curl是开源的。
好吧,其实我已经解决了。 不是分析curl的源码。而是通过别的方式。。不是很好。 追踪源码,有点头晕,跟进去的地方都对,源码的中间过程没搞清楚,目前还没有找到正确的使用方法。。。。 后面再跟吧。这个帖子先不结。。。
赵4老师 2016-10-08
  • 打赏
  • 举报
回复
提醒:curl是开源的。
  • 打赏
  • 举报
回复
引用 3 楼 lishunihaoa 的回复:
[quote=引用 2 楼 zjq9931 的回复:] [quote=引用 1 楼 lishunihaoa 的回复:] CURLOPT_INFILESIZE ,作用域??这是静态的变量?? 你把它变成全局的看下,或者加上static 或者你在某个地方改了,变成0。
不行仍然是0.。。。[/quote] 贴个代码吧,想象力不行[/quote]

curl_easy_setopt(m_pCurl, CURLOPT_HTTPHEADER, HeaderList);
curl_easy_setopt(m_pCurl, CURLOPT_POST, 1);
curl_easy_setopt(m_pCurl, CURLOPT_READFUNCTION, upload_callback);
curl_easy_setopt(m_pCurl, CURLOPT_READDATA, fp);
curl_easy_setopt(m_pCurl, CURLOPT_INFILESIZE_LAGE, i64FileSize);  // 这里确定变量不为0并且,int类型的也实验过
curl_easy_setopt(m_pCurl, CURLOPT_URL, Link);  //这些都没有错,文件可以上传成功,就是进度显示不正常。。。
curl_easy_setopt(m_pCurl, CURLOPT_NOPROGRESS, 0);
curl_easy_setopt(m_pCurl, CURLOPT_PROGRESSFUNCTION, upload_progress_callback);//使用form方式上传的时候是正确的
curl_easy_setopt(m_pCurl, CURLOPT_PROGRESSDATA, this);

SureGOGOGO 2016-10-08
  • 打赏
  • 举报
回复
引用 2 楼 zjq9931 的回复:
[quote=引用 1 楼 lishunihaoa 的回复:] CURLOPT_INFILESIZE ,作用域??这是静态的变量?? 你把它变成全局的看下,或者加上static 或者你在某个地方改了,变成0。
不行仍然是0.。。。[/quote] 贴个代码吧,想象力不行
  • 打赏
  • 举报
回复
引用 1 楼 lishunihaoa 的回复:
CURLOPT_INFILESIZE ,作用域??这是静态的变量?? 你把它变成全局的看下,或者加上static 或者你在某个地方改了,变成0。
不行仍然是0.。。。
SureGOGOGO 2016-10-08
  • 打赏
  • 举报
回复
CURLOPT_INFILESIZE ,作用域??这是静态的变量?? 你把它变成全局的看下,或者加上static 或者你在某个地方改了,变成0。
  • 打赏
  • 举报
回复
搞定,结贴。 跟踪出来了,知道了正确的用法。 curl_easy_setopt(m_pCurl, CURLOPT_INFILESIZE_LAGE, i64FileSize); 换成 curl_easy_setopt(m_pCurl, POSTFIELDSIZE_LAGE, i64FileSize); 即可。 因为是通过post上传的文件。

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧