[英]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.