使用libcurl下载目录中的所有文件

时间:2010-01-29 12:59:18

标签: c++ download libcurl ftps

我是libcurl的新手,并找到了从ftp服务器下载单个文件的方法。现在我的要求是下载目录中的所有文件,我猜它不受libcurl的支持。请在libcurl上建议如何下载目录中的所有文件,或者是否存在类似于libcurl的其他库?

提前致谢。

3 个答案:

答案 0 :(得分:8)

这是一段代码示例。

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

答案 1 :(得分:0)

您需要FTP服务器上的文件列表。这并不简单,因为每个FTP服务器可能会返回不同格式的文件列表......

无论如何,我认为ftpgetresp.c示例显示了一种方法。 FTP Custom CUSTOMREQUEST提出另一种方式。

答案 2 :(得分:0)

只需使用CURLOPT_WILDCARDMATCH功能。 样例代码: https://curl.haxx.se/libcurl/c/ftp-wildcard.html