簡體   English   中英

libcurl下載文件大小超過緩沖區大小

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM