Я использую C++ с libcurl для передачи SFTP/FTPS. Перед загрузкой файла мне нужно проверить, существует ли файл, не загружая его.с помощью libcurl для проверки наличия файла на SFTP-сайте
Если файл не существует, я бегу на следующие проблемы:
//set up curlhandle for the public/private keys and whatever else first.
curl_easy_setopt(CurlHandle, CURLOPT_URL, "sftp://[email protected]:host/nonexistent-file");
curl_easy_setopt(CurlHandle, CURLOPT_NOBODY, 1);
curl_easy_setopt(CurlHandle, CURLOPT_FILETIME, 1);
int result = curl_easy_perform(CurlHandle);
//result is CURLE_OK, not CURLE_REMOTE_FILE_NOT_FOUND
//using curl_easy_getinfo to get the file time will return -1 for filetime, regardless
//if the file is there or not.
Если я не использую CURLOPT_NOBODY, это работает, я получаю CURLE_REMOTE_FILE_NOT_FOUND.
Однако, если файл существует, он загружается, что отнимает у меня время, так как я просто хочу знать, есть оно там или нет.
Любые другие методы/варианты Мне не хватает? Обратите внимание, что он должен работать и для ftps.
Редактировать: Данная ошибка возникает при использовании sftp. С FTPS/FTP я получаю CURLE_FTP_COULDNT_RETR_FILE, с которым я могу работать.
Вы когда-нибудь решали эту проблему? У меня такая же проблема. – Lextar