【问题标题】:Downloading Fails over 2 GB on HTTP using libcurl使用 libcurl 在 HTTP 上下载超过 2 GB 失败
【发布时间】:2013-11-12 10:33:58
【问题描述】:

我已经编写了代码,它适用于最大 2 GB 的数据下载。如果数据大于 2GB,它将无法工作..请告诉我解决方案,因为我发现了很多但没有得到适当的答案。

我正在写一些小代码 sn-p 供参考。它不是完整代码... 我认为目标文件系统是 EXT4。

curl_global_init(CURL_GLOBAL_ALL);
m_curl = curl_easy_init();  

curl_easy_setopt(m_curl, CURLOPT_LOW_SPEED_LIMIT,1048L);
curl_easy_setopt(m_curl, CURLOPT_LOW_SPEED_TIME, 30L);

curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, write_data);

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {

size_t written;

    written = fwrite(ptr, size, nmemb, stream);
    return written;
}

curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, fp);

curl_easy_setopt(m_curl, CURLOPT_WRITEHEADER, NULL);

curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, 0L);
curl_easy_setopt(m_curl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(m_curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(m_curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(m_curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(m_curl, CURLOPT_FOLLOWLOCATION, 1L);

请给我答案。

【问题讨论】:

    标签: libcurl


    【解决方案1】:

    尝试在命令行中尝试curl -V。如果生成的文本不包含单词 Largefile,那么您使用的 curl 版本不支持大于 2 GB 的文件大小。

    This answer has more useful information.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-06
      • 2017-01-24
      • 2014-03-10
      • 2019-05-28
      • 2010-12-10
      • 2014-12-05
      • 1970-01-01
      • 2011-06-30
      相关资源
      最近更新 更多