Загрузка всех файлов в каталоге с использованием libcurl - PullRequest
3 голосов
/ 29 января 2010

Я новичок в libcurl и нашел способ загрузить один файл с ftp-сервера. Теперь мое требование состоит в том, чтобы загрузить все файлы в каталоге, и я предполагаю, что это не поддерживается libcurl. Пожалуйста, предложите на libcurl скачать все файлы в каталоге или есть какая-либо другая библиотека, похожая на libcurl?

Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 12 марта 2011

Вот пример кода.

static size_t GetFilesList_response(void *ptr, size_t size, size_t nmemb, void *data)
{
    FILE *writehere = (FILE *)data;
    return fwrite(ptr, size, nmemb, writehere);
}

bool FTPWithcURL::GetFilesList(char* tempFile)
{
    CURL *curl;
    CURLcode res;
    FILE *ftpfile;

    /* local file name to store the file as */
    ftpfile = fopen(tempFile, "wb"); /* b is binary, needed on win32 */ 

    curl = curl_easy_init();
    if(curl) 
    {
        curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com");
        curl_easy_setopt(curl, CURLOPT_USERPWD, "username:password");
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile);
        // added to @Tombart suggestion
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, GetFilesList_response);
        curl_easy_setopt(curl, CURLOPT_DIRLISTONLY, 1);

        res = curl_easy_perform(curl);

        curl_easy_cleanup(curl);
    }

    fclose(ftpfile); //


    if(CURLE_OK != res) 
        return false;

    return true;
}
0 голосов
/ 29 января 2010

Вам нужен список файлов на FTP-сервере. Что непросто, поскольку каждый FTP-сервер может возвращать свой формат листинга ...

В любом случае, пример ftpgetresp.c показывает способ сделать это, я думаю. FTP Custom CUSTOMREQUEST предлагает другой способ.

...