[英]libcurl download file size exceed buffer size
我在https://curl.haxx.se/libcurl/c/ftpget.html上有关于此代码的问题
在回拨功能中
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
{
struct FtpFile *out=(struct FtpFile *)stream;
if(out && !out->stream) {
/* open file for writing */
out->stream=fopen(out->filename, "wb");
if(!out->stream)
return -1; /* failure, can't open file to write */
}
return fwrite(buffer, size, nmemb, out->stream);
}
如果文件大小超过缓冲区大小怎么办? 我认为该函数不会被迭代调用,因为它每次都会覆盖文件。 有解决方法吗? 谢谢!
从curl 文档 :
回调函数将在所有调用中传递尽可能多的数据,但是您不得做任何假设。 它可能是一个字节,也可能是数千。 将在curl.h头文件中定义将传递到写回调的最大正文数据量:CURL_MAX_WRITE_SIZE(通常默认值为16K) 。 如果启用了CURLOPT_HEADER,这使标头数据传递到写回调,则最多可以传递CURL_MAX_HTTP_HEADER个字节的标头数据。 这通常意味着100K。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.