Я перехожу из wxFTP, который поставляется с wxWidgets в libcurl. Я имею сумасшедший способ подключиться и получить все каталоги и файл в каталоге /, просто указав URL. Теперь мне нужно перейти в другой каталог (пусть say/public_html/mysite). Я не могу сделать это с помощью libcurl.
Я не могу поверить, что его так трудно сделать в libcurl, поэтому я склонен к выводу, что я что-то пропустил. Мой соответствующий код показан ниже, и все, что у меня есть, относительные. Paths like/www not ftp URL как ftp://someurl.com/www/
Извините, если его что-то очевидное явилось очень новым для 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);
Это была моя ошибка в коде, который завершил отправку URL-адресов с помощью формата ftp://ftp.hosanna.site40.net:21/public_html
Поэтому я изменил использование PORT в easy setopt.
Таким образом, это не проблема скручивания, а моя (хотя и очень тонкая для меня). Также убедитесь, что все каталоги заканчиваются/или libray, будут интерпретировать их как файлы.
например
ftp://ftp.hosanna.site40.net/public_html //interpreted as file
ftp://ftp.hosanna.site40.net/public_html/ //interpreted as directory