使用libcurl在HTTP上下载超过2 GB

时间:2013-11-12 10:33:59

标签: libcurl

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

我正在编写一些小代码片段作为参考。这不是完整代码...... 我认为目标目标文件系统是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);

请给我答案。

1 个答案:

答案 0 :(得分:0)

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

This answer has more useful information.