libcurl + openssl不能下载大于2GB的文件
libcurl + openssl cannot download files bigger than 2GB
我正在尝试使用libcurl 7.20.0和openssl 0.9.81下载文件(但我将库更新为7.29.0和1.0.1e), Windows 7和所有内容都在编译amd64下载大文件。我使用curlpp作为curl的包装。问题是,一旦达到2GB,下载就会停止,错误为Failed writing body (0 != 8999)
。我用来执行请求的代码是:
boost::shared_ptr<curlpp::Easy> curl_request(boost::make_shared<curlpp::Easy>());
curl_request.setOpt(new curlpp::options::HttpVersion(CURL_HTTP_VERSION_1_0));
curl_request.setOpt(new curlpp::options::Timeout(3600));
curl_request.setOpt(new curlpp::options::SslVerifyHost(0));
curl_request.setOpt(new curlpp::options::SslVerifyPeer(0));
curl_request->setOpt(new curlpp::options::Url(request_uri));
if (cookies.size() == 0) {
curl_request->setOpt(new curlpp::options::CookieList("dummy"));
} else {
BOOST_FOREACH(const std::string &cookie, m_cookies) {
curl_request->setOpt(new curlpp::options::CookieList(cookie));
}
}
curl_request->setOpt(new curlpp::options::Post(true));
curl_request->setOpt(new curlpp::options::PostFields(query_string));
curl_request->setOpt(new curlpp::options::WriteStream(stream.get()));
try {
curl_request->perform();
} catch (std::exception &ex) {
error = true;
std::cerr << "caught Unknown error: " << ex.what() << std::endl;
}
编辑流是一个字符串流,我使用MS VS 2008
这不是libcurl或OpenSSL的限制。这可能是您的文件系统(FAT?)或WriteStream实现(或类似的)阻止了此工作。
错误消息似乎暗示突然写入磁盘失败,这可能是因为写入溢出了支持的最大大小。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- CStdioFile 不能处理大于 2GB 的文件?
- 解析用Tab分隔的大文件(~2Gb)的最快方法
- 编写大于2GB的文件
- 如何使用C/C++编写/创建大于2GB的文件
- 如何使用OpenCV编写大于2GB的avi文件
- 在处理大文件 (> 2GB) 时,将pos_type分配给uint64_t是否安全?
- 在c++中将一个巨大的文本文件(2Gb以上)分成2个块
- 无法在 Ubuntu 64 位操作系统中读取大于 2GB 的文件
- libcurl + openssl不能下载大于2GB的文件
- 如何在c++中使用fstream将数据写入大于2GB的文件