libcurl检测FTP/FTPS服务器是否存在某个文件
时间: 2024-09-14 21:06:01 浏览: 110
libcurl是一个强大的开源库,用于在C/C++程序中进行URL传输,包括HTTP、HTTPS、FTP、FTPS等协议。如果你想通过libcurl检测FTP或FTPS服务器上是否存在某个文件,你可以使用它的FTP函数,如`curl_easy_setopt` 和 `CURLOPT_FILETEST`。
以下是一个基本的示例,展示如何使用libcurl检查文件存在:
```c
#include <curl/curl.h>
size_t write_function(void *contents, size_t size, size_t nmemb, void *userp) {
// 这里通常不做处理,因为我们只关心文件是否存在
return size * nmemb;
}
int main() {
CURL *curl = curl_easy_init();
if (!curl) {
fprintf(stderr, "Failed to initialize libcurl\n");
return 1;
}
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Range: bytes=0-");
curl_easy_setopt(curl, CURLOPT_URL, "ftp(s)://example.com/path/to/file");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_function);
curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1); // 如果连接失败立即返回错误
curl_easy_setopt(curl, CURLOPT_HEADER, 0); // 不输出头部信息
curl_easy_setopt(curl, CURLOPT_NOBODY, 1); // 只检查头信息,不下载内容
int response_code = CURLE_OK; // 初始化为成功状态
curl_easy_perform(curl);
// 检查HTTP响应码,如果状态码为200(表示请求成功),则文件存在
if (response_code == CURLE_OK && curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code) == CURLE_OK && response_code == 200) {
printf("File exists.\n");
} else {
printf("File does not exist or connection failed.\n");
}
curl_easy_cleanup(curl);
curl_slist_free_all(headers);
return 0;
}
```
在这个例子中,我们设置了`CURLOPT_NOBODY`使得libcurl只检查头信息,然后检查HTTP响应码判断文件是否存在。如果状态码为200,那么文件就存在;反之,则不存在。
阅读全文
相关推荐


















