C++libcurl来检查远程文件是否不同

C++ libcurl to check if remote file is different

本文关键字:文件 是否 检查 程文件 C++libcurl      更新时间:2023-10-16

我想知道是否可以在下载文件之前查询远程服务器上的文件,以了解它是否与本地文件不同。

例如,HTTP请求上的一个非常大的xml文件,如果我可以在不首先下载的情况下查看它是否发生了更改,我可以节省大量浪费的下载。

编辑:这可以修改日期,文件大小等

您可以运行HEAD请求来获取标头信息。根据服务器的不同,这些字段甚至可能包含带有文件校验和的Header字段(尽管不太可能)。正如Aleksandar所指出的,寻找"Last Modified"Header字段是一个良好的开端。有关如何使用libcurl仅获取标头的信息,请参阅此处:C++libcurl在下载正文之前检查标头

如果只检查修改日期就足够了,那么libcurl直接支持这一点-请参阅CURLOPT_TIMEVALUE。还有一个示例代码:

CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* January 1, 2020 is 1577833200 */
curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
/* If-Modified-Since the above time stamp */
curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
/* Perform the request */
curl_easy_perform(curl);
}