我正在尝试开发一个简单的PoC(概念证明)来执行支持部分传输文件恢复的sftp文件上传。
Environemnt:
GNU/Linux Ubuntu 16.04 64b
libcurl 7.58.0 built with libssh2 support
gcc 5.4.0
我以代码示例为起点:https://curl.haxx.se/libcurl/c/ftpuploadresume.html 并将其修改为:
我验证的行为是连接完成后:
我对评论感到有些困惑:
/*
* With NOBODY and NOHEADER, libcurl will issue a SIZE
* command, but the only way to retrieve the result is
* to parse the returned Content-Length header. Thus,
* getcontentlengthfunc(). We need discardfunc() above
* because HEADER will dump the headers to stdout
* without it.
*/
curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 1L);
curl_easy_setopt(curlhandle, CURLOPT_HEADER, 1L);
假设评论正确,我希望将 CURLOPT_HEADER 选项设置为 0L 。
我也尝试了,但行为与上述相同。
更新
刚刚在github上发现上述行为是设计的,因为SFTP协议不支持HEADER概念,所以我的问题是,如何使用libcurl来检索远程文件大小?
答案 0 :(得分:0)
经过多次阅读和与curl mainteiner的互动,我解决了这个问题。 一个完全有效的例子为卷曲项目做出了贡献并得到了友好的认可。 详细信息如下:https://curl.haxx.se/libcurl/c/sftpuploadresume.html