LibCurl:改变CWD

时间:2013-11-29 19:14:48

标签: c++ ftp wxwidgets libcurl

我正在从wxWidgets附带的wxFTP迁移到libcurl。我疯狂地通过简单地提供URL连接并获取所有目录和文件在/目录。现在我需要更改到另一个目录(比如/ public_html / mysite)。我无法用libcurl做到这一点。

我无法相信它在libcurl中如此难以做到所以我倾向于得出结论,我在这里想念一些东西。我的相关代码如下所示,我所拥有的是相对路径,例如/ www而不是像ftp://someurl.com/www/这样的ftp网址

很抱歉,如果它对libcurl来说很明显,并且已经工作了好几个小时已经不成功。

CURL* handle = curl_easy_init();
SetHandleOptions(handle); //set options
CURLcode res;

if(handle)
{
    wxString command ="CWD "+path;
    curl_easy_setopt(handle, CURLOPT_CUSTOMREQUEST , command.ToStdString().c_str());  
    res = curl_easy_perform(handle);

    if(res==CURLE_OK)
    { 

        wxString str(curl_easy_strerror(res));
        SendMessage(str);

        curl_easy_setopt(handle, CURLOPT_CUSTOMREQUEST , "MLSD");
        res = curl_easy_perform(handle);

        if(res==CURLE_OK)
        {
            wxString str(curl_easy_strerror(res));
            SendMessage(str);
        }
        else
        {
            //send error message
            wxString str(curl_easy_strerror(res));
            SendMessage(str);
        } 
    }
    else
    {
        //send error message
        wxString str(curl_easy_strerror(res));
        SendMessage(str);
    }
}
curl_easy_cleanup(handle);

1 个答案:

答案 0 :(得分:0)

我的错误是代码结束了发送格式为ftp://ftp.hosanna.site40.net:21/public_html的网址所以我改为在简单的setopt中使用PORT。

所以它不是卷曲的问题,而是我的(虽然对我来说非常微妙) 还要确保以/或libray结尾的所有目录都将它们解释为文件。

例如

ftp://ftp.hosanna.site40.net/public_html //interpreted as file
ftp://ftp.hosanna.site40.net/public_html/ //interpreted as directory