我想知道是否可以在下载之前查询远程服务器上的文件,以了解它是否与本地服务器不同。
例如,HTTP请求中的一个非常大的xml文件,如果我可以看到它是否在没有先下载的情况下进行了更改,我可以节省大量浪费的下载。
编辑:这可以是修改日期,文件大小等
答案 0 :(得分:2)
您可以运行HEAD请求以获取标头信息。根据服务器的不同,这些服务器甚至可能包含带有文件校验和的Header字段(尽管不太可能)。 寻找" Last-Modified"正如Aleksandar指出的那样,Header领域是一个良好的开端。 在这里查看有关如何仅使用libcurl获取标头的信息: C++ libcurl check header before downloading body
答案 1 :(得分:0)
如果仅仅检查修改日期就足够了,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);
}