源代码附上:
//全局变量
bool resumeDownload = false; //是否需要下载的标记位
long downloadFileLenth = 0; //需要下载的总大小, 远程文件的大小
/* 得到本地文件大小的函数, 若不是续传则返回0, 否则返回指定路径地址的文件大小 */
long getLocalFileLenth(const char* localPath){
if (!resumeDownload){
return 0;
}
return fs_open(localPath).fs_size();
}
/* 得到远程文件的大小, 要下载的文件大小 */
long getDownloadFileLenth(const char *url){
long downloadFileLenth = 0;
CURL *handle = curl_easy_init();
curl_easy_setopt(handle, CURLOPT_URL, url);
curl_easy_setopt(handle, CURLOPT_HEADER, 1); //只需要header头
curl_easy_setopt(handle, CURLOPT_NOBODY, 1); //不需要body
if (curl_easy_perform(handle) == CURLE_OK) {
curl_easy_getinfo(handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &downloadFileLenth);
} else {
downloadFileLenth = -1;
}
return downloadFileLenth;
}