2010-04-06 12 views
2

J'ai un petit doute. J'ai besoin d'obtenir une liste des fichiers dans un répertoire spécifique sur un serveur SFTP. J'utiliserai CUROPT_DIRLISTONLY pour obtenir les noms, mais je ne sais pas comment les obtenir. Ceci est la paix de code que j'ai maintenant:Utilisation du protocole sftp avec libcurl - Comment lister le contenu d'un répertoire?

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); 

Si je ne me trompe pas, curl_easy_perform retourne juste un ERROR_CODE (succès ou erreur ir il applique), correct? Alors, où puis-je obtenir la liste des fichiers?

Si je l'exécute sur un terminal: curl -u utilisateur: passe sftp: // serveur/chemin/-l Je reçois la liste que je veux ....

Toute aide serait appréciée.

Merci à l'avance, George

Répondre

4

Vous devez créer une « fonction de rappel » avec la signature suivante:

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

Vous appelez ensuite curl_easy_setopt pour définir la fonction de rappel comme CURLOPT_WRITEFUNCTION. Votre fonction sera appelée pour chaque segment de données reçu du serveur distant, ce qui devrait être une forme de liste de répertoires.

Avertissement: J'ai lu seulement sur ce documentation, pas essayé.

+0

Quelques instants après le dépôt, j'ai trouvé la même tranquillité d'information dans la documentation. J'essaye et ça semble fonctionner. Plus tard, je reviendrai avec de meilleurs résultats. Thansk beaucoup. – George