libcurl sftp文件上传恢复问题

3
我正在尝试开发一个简单的 PoC(概念验证),以执行支持部分传输文件恢复的 sftp 文件上传。
环境:
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为起点,并对其进行了修改,使其:

  1. 使用协议字符串sftp
  2. 在用于重试的for()循环中强制使用恢复分支(c=1)

我要验证的行为是一旦连接建立后:

  1. 第一个curl_perform()调用之后远程文件大小会被截断为零(我理解这应该是检索远程文件大小的操作)
  2. 回调getcontentlengthfunc()从未被调用

还有一条评论让我有点困惑:

  /*
   * 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检索远程文件大小?

1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接