如何使用libcurl打印远程FTP目录列表?

时间:2015-12-15 02:04:34

标签: c libcurl

我想我应该使用CURLOPT_DIRLISTONLY,但我不确定如何继续。

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);

我不确定如何调用实际打印列表。

1 个答案:

答案 0 :(得分:2)

为FTP启用CURLOPT_DIRLISTONLY选项的效果是仅检索文件名而不是文件详细信息(例如文件大小,日期等),基本上是使用普通ls之间的差异(仅限)名称)或UNIX上的ls -l(列出详细信息)。在FTP协议级别,启用CURLOPT_DIRLISTONLY将使libcurl发出NLST命令而不是LIST。然后,要获取目录列表,您将执行与文件传输相同的操作,区别在于您的ftp:// URL将指向目录(而不是文件)。该转移的内容将是您的目录列表。

要显示目录列表,而不是将其保存到文件,可以使用CURLOPT_WRITEFUNCTION选项让libcurl调用为每个数据块提供的回调函数。该功能只需要fwrite数据stdout来显示它。看起来应该是这样的:

void write_callback(void* data, size_t size, size_t nmemb, void* ptr)
{
  fwrite(data, size, nmemb, stdout);
}

int main()
{
  // ...
  curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_callback);
  // ...
  ret = curl_easy_perform(handle);
}