C++中使用libcurl下载文件示例
备注:简单示例,仅供参考,个人c++
代码// // sudo apt-get remove libcurl4 // sudo apt-get install libcurl4-openssl-dev // // g++ curl_file.cpp -std=c++11 -lcurl -o a.out;./a.out #include执行如下命令#include #include //判断url是否存在 int checkUrlIsExist(const char * URL) { CURL * curl_fd = curl_easy_init(); CURLcode code; CURLINFO response_code = CURLINFO_NONE; curl_easy_setopt(curl_fd, CURLOPT_NOBODY, 1); curl_easy_setopt(curl_fd, CURLOPT_TIMEOUT, 3); curl_easy_setopt(curl_fd, CURLOPT_URL, URL); code = curl_easy_perform(curl_fd); if (code == CURLE_OK) { curl_easy_getinfo(curl_fd, CURLINFO_RESPONSE_CODE, &response_code); } curl_easy_cleanup(curl_fd); return response_code; } size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written = fwrite(ptr, size, nmemb, stream); // prints as unsigned decimal printf("file writen byte:%zun", written); return written; } int main() { std::string url = "https://www.jianshu.com"; const char *cUrl = url.c_str(); int statusCode = checkUrlIsExist(cUrl); if (statusCode == 404) { printf("url does not existn"); } else { printf("statusCode:%dn", statusCode); } CURL *curl; FILE *fp; CURLcode res; char outfilename[FILENAME_MAX] = "./index.html"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl, CURLOPT_URL, cUrl); 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); } printf("donen"); return 0; }
g++ curl_file.cpp -std=c++11 -lcurl -o b.out;./b.out
结果如下
statusCode:200
file writen byte:7801
file writen byte:4096
file writen byte:3906
file writen byte:8304
done
文件写入到了index.html



