【问题标题】:Using the sftp protocol with libcurl -- How do I list the contents of a directory?将 sftp 协议与 libcurl 一起使用——如何列出目录的内容?
【发布时间】:2010-04-06 13:13:38
【问题描述】:

我有点怀疑。我需要获取 SFTP 服务器上特定目录中的文件列表。我将使用 CUROPT_DIRLISTONLY 来获取名称,但我不确定如何获取它们。这是我现在拥有的代码的平静:

   string baseUrl(serverAddr + "/" + __destDir);
   curl_easy_setopt(anEasyHandle, CURLOPT_URL, (baseUrl).c_str());
   curl_easy_setopt(anEasyHandle, CURLOPT_VERBOSE,      1L);
   curl_easy_setopt(anEasyHandle, CURLOPT_DIRLISTONLY, 1);
   curl_easy_setopt(anEasyHandle, CURLOPT_QUOTE, commandList);

   curl_easy_perform(anEasyHandle);

   curl_easy_reset(anEasyHandle);

如果我是对的,curl_easy_perform 只会返回一个 ERROR_CODE(它适用于成功或错误),对吗?那么我在哪里可以得到文件列表呢?

如果我在终端上运行它: curl -u user:pass sftp://server/path/ -l 我得到我想要的列表......

任何帮助将不胜感激。

提前致谢, 乔治

【问题讨论】:

    标签: c++ curl sftp libcurl


    【解决方案1】:

    您需要创建一个具有以下签名的“回调函数”:

    size_t function( void *ptr, size_t size, size_t nmemb, void *stream);
    

    然后您调用curl_easy_setopt 将回调函数设置为您的CURLOPT_WRITEFUNCTION。将从远程服务器接收到的每个数据块调用您的函数,这应该是某种形式的目录列表。

    免责声明:我只看过documentation这方面的内容,没有尝试过。

    【讨论】:

    • 发布后不久,我发现文档中的信息同样平静。我正在尝试,它似乎正在工作。稍后我会带着更好的结果回来。非常感谢。
    猜你喜欢
    • 2015-11-10
    • 2018-04-24
    • 2011-12-11
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多