R
如何使用libcurl从github仓库下载zip文件?
如何使用libcurl从github仓库下载zip文件?
首先需要使用libcurl库的curl_e
as
y_init()
函数
来初始化cURL会话。
CURL *curl;
curl = curl_easy_init();
然后设置下载的URL地址以及保存文件的路径。
curl_easy_setopt(curl, CURLOPT_URL, "https://github.com/<USER>/<REPO>/archive/<BRANCH>.zip");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
其中<USER>是github用户名,<REPO>是仓库名称,<BRANCH>是分支名称。write_data是自定义的回调函数,用来将下载的数据保存到文件中。
执行下载操作。
curl_easy_perform(curl);
释放cURL会话。
curl_easy_cleanup(curl);
完整示例代码:
#include <stdio.h>
#include <curl/curl.h>
size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
int main()
CURL *curl;
FILE *fp;
CURLcode res;
char *url = "https://github.com/<USER>/<REPO>/archive/<BRANCH>.zip";
char outfilename[FILENAME_MAX] = "<REPO>.zip";
curl = curl_easy_init();
if (curl)
fp = fopen(outfilename,"wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(fp);
return 0;