Cocos2.2.3在线下载——断点续传
发布时间:2020-12-14 16:55:21 所属栏目:百科 来源:网络整理
导读:以下代码实现了Cocos的在线下载中的断点续传,可跨平台使用#include fstream#include iostream#include curl/curl.hlong DLManager::downloadResume(){//判断该要下载的文件是否存在//http://blog.csdn.net/roger_77/article/details/1538447/fstream _file;
以下代码实现了Cocos的在线下载中的断点续传,可跨平台使用 #include <fstream> #include <iostream> #include <curl/curl.h> long DLManager::downloadResume() { //判断该要下载的文件是否存在 //http://blog.csdn.net/roger_77/article/details/1538447/ fstream _file; _file.open(getTargetPath().c_str(),ios::in); if(_file) { CCLog("%s is Exist",getTargetPath().c_str()); } else { CCLog("%s is not Exist",getTargetPath().c_str()); return -1; } _file.close(); //获取已下载文件的大小 long fileSize = 0; FILE * fp = fopen(getTargetPath().c_str(),"rb"); if (!fp) { return -1; } fseek(fp,SEEK_END); // 移到文件末尾 fileSize = ftell(fp); CCLog("getTargetPath().c_str() : size = %dn",fileSize); fclose(fp); return fileSize; } bool DLManager::download() { //断点续传获取续传文件的大小 _curPackageSize = downloadResume(); //打开文件,将文件指针移到末尾 FILE *fp = fopen(getTargetPath().c_str(),"a+b"); if (! fp) { CCLog("can not create file %s",getTargetPath().c_str()); return false; } fseek(fp,SEEK_END); //下载文件 CURL *_curl; _curl = curl_easy_init(); if (! _curl) { CCLog("can not init curl"); return false; } // Download pacakge CURLcode res; curl_easy_setopt(_curl,CURLOPT_URL,_packageUrl.c_str()); curl_easy_setopt(_curl,CURLOPT_WRITEFUNCTION,downLoadPackage); curl_easy_setopt(_curl,CURLOPT_WRITEDATA,fp); curl_easy_setopt(_curl,CURLOPT_NOPROGRESS,false); curl_easy_setopt(_curl,CURLOPT_PROGRESSFUNCTION,DLManagerProgressFunc); curl_easy_setopt(_curl,CURLOPT_PROGRESSDATA,this); if(_curPackageSize != -1) {//若存在断点续传的文件,则设置下的起始位置,即已下载的包的大小 curl_easy_setopt(_curl,CURLOPT_RESUME_FROM,_curPackageSize); } res = curl_easy_perform(_curl); curl_easy_cleanup(_curl); if (res != 0) { CCLog("error when download package"); fclose(fp); return false; } CCLog("succeed downloading package %s",_packageUrl.c_str()); fclose(fp); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |