#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
/*
* windows may find it here-> http://www.confusedbycode.com/curl/.
*/
# This can use to download images according it's url.
# If you need thread-safe please confirm curl_global_init(CURL_GLOBAL_ALL); at the beginning of main().
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
int download_pic(string uri, const string save_path) {
CURL *curl;
FILE *fp;
CURLcode res;
int last = uri.find_last_of("/") + 1;
int nlen = uri.length() - last;
string file_name = uri.substr(last, nlen);
curl = curl_easy_init();
if (curl) {
fp = fopen(save_path.c_str(), "wb");
char* encode_url = curl_easy_escape(curl, file_name.c_str(), 0);
string e_url = encode_url;
boost::algorithm::replace_first(uri, file_name, e_url);
curl_easy_setopt(curl, CURLOPT_URL, uri.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
curl_free(encode_url);
fclose(fp);
}
return 0;
}
基于libcurl下载图片(url中可含中文)
最新推荐文章于 2023-05-29 15:17:12 发布