Использование протокола sftp с libcurl - Как мне перечислить содержимое каталога? - PullRequest
2 голосов
/ 06 апреля 2010

У меня есть небольшое сомнение. Мне нужно получить список файлов в определенном каталоге на 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 Я получаю список, который хочу ....

Любая помощь будет оценена.

Спасибо заранее, George

1 Ответ

4 голосов
/ 06 апреля 2010

Вам необходимо создать «функцию обратного вызова» со следующей подписью:

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

Затем вы вызываете curl_easy_setopt , чтобы установить функцию обратного вызова в качестве CURLOPT_WRITEFUNCTION. Ваша функция будет вызываться для каждого куска данных, полученных с удаленного сервера, что должно быть какой-то формой списка каталогов.

Отказ от ответственности: Я только прочитал документацию по этому вопросу, но не пробовал.

...