Muszę przesłać katalogi na serwer FTP w mojej aplikacji i zaplanować na użycie libcurl. Widzę, że nie ma bezpośredniego sposobu na przesłanie katalogu z wieloma plikami , co ma dla mnie sens. Nie mogłem jednak znaleźć żadnej wzmianki na temat przesyłania wielu plików przez .libcurl - Zachowaj połączenie "otwarte", aby przesłać wiele plików (FTP)
Jeśli otrzymam listę plików w katalogu, mogę przesłać je w pętli. Opcja CURLOPT_FTP_CREATE_MISSING_DIRS
może pomóc w podkatalogach, , ale jeśli chciałbym wiedzieć również, jeśli brakuje mi tu punktu lub miałoby to poważną wadę.
Główne pytanie brzmi: jak mogę utrzymać połączenie "otwarte"? Ponowne połączenie na każdego pliku prawdopodobnie oznaczałoby dodatkowe niechciane obciążenie.
Idealnie, chciałbym dalej używać łatwego interfejsu. Ale jeśli inny interfejs zapewnia lepsze wsparcie w tym przypadku, użyję go.
CURLcode ret;
CURL *handle = curl_easy_init();
/* Connect to FTP server using *
* the given username and password */
for ({each file}) {
curl_easy_setopt(handle, ..., ...);
...
ret = curl_easy_perform(handle);
/* Analyse return code */
curl_easy_reset(handle);
}
/* Disconnect from server */
curl_easy_clenup(handle);
Wielkie dzięki, panie Stenberg, jak bardzo cieszę się z otrzymanej od Ciebie odpowiedzi! Jeśli mogę poprosić o dalsze wyjaśnienia, czy w tym przypadku będzie potrzebne 'curl_easy_reset()'? Strona podręcznika mówi, że połączenia na żywo są przechowywane w uchwycie, jednak czy ponowne ustawienie opcji ręcznie (w pętli) będzie wystarczające? – sidyll
Możesz zrobić w dowolny sposób, który według Ciebie najlepiej pasuje do Twojego kodu. Reset nie zabije pamięci podręcznej połączeń. Jeśli wolisz, możesz ponownie ustawić opcje ręcznie. –
Jeszcze raz dziękuję i gratuluję niesamowitej pracy. Najlepsze życzenia – sidyll