我使用Libcurl帖子回调从文件发送数据。示例here显示了如何从回调函数发送每个调用1个字节的数据。 我已经更改了代码,因此文件被读入块。这几乎可以正常工作。
目前的示例代码是:
if(sizeleft){
*( char *)ptr = readptr[0];
readptr++;
sizeleft--;
return 1;
}
此示例将数据发送为1个字节。 但是假设我必须发送多个字节。我试图增加
readptr by two each time and decreasing sizeleft by two
和return 2bytes at a time
。
它没有像这样工作,数据已损坏。
如果那里有人可以帮助我,我将不胜感激。 谢谢
答案 0 :(得分:2)
很难从你的问题中准确地判断出你正在做什么,确切地说你期望发生什么以及究竟发生了什么。然而,看起来你正走在正确的轨道上。
CURLOPT_READFUNCTION的documentation表明size * nitems
(示例中为size * nmemb
)是您可以写入的字节数的上限 { {1}},函数的返回值是您编写的实际字节数。返回零意味着您已经编写了您想写的所有内容,并且您的回调函数不再被调用。
如果从函数返回的值不等于实际写入缓冲区的字节数,那么您可能会发现损坏。
PS:像:
buffer