文件下载失败删除不完整文件

This commit is contained in:
xzl 2017-05-24 09:56:54 +08:00
parent bc64460327
commit 1b78f7ae5a
2 changed files with 6 additions and 0 deletions

View File

@ -32,6 +32,7 @@ void HttpDownloader::startDownload(const string& url, const string& filePath,boo
auto strErr = StrPrinter << "打开文件失败:" << filePath << endl; auto strErr = StrPrinter << "打开文件失败:" << filePath << endl;
throw std::runtime_error(strErr); throw std::runtime_error(strErr);
} }
_bDownloadSuccess = false;
if(bAppend){ if(bAppend){
auto currentLen = ftell(_saveFile); auto currentLen = ftell(_saveFile);
if(currentLen){ if(currentLen){
@ -67,6 +68,7 @@ void HttpDownloader::onResponseBody(const char* buf, size_t size, size_t recvedS
void HttpDownloader::onResponseCompleted() { void HttpDownloader::onResponseCompleted() {
closeFile(); closeFile();
_bDownloadSuccess = true;
if(_onResult){ if(_onResult){
_onResult(Err_success,"success",_filePath.data()); _onResult(Err_success,"success",_filePath.data());
_onResult = nullptr; _onResult = nullptr;
@ -75,6 +77,9 @@ void HttpDownloader::onResponseCompleted() {
void HttpDownloader::onDisconnect(const SockException &ex) { void HttpDownloader::onDisconnect(const SockException &ex) {
closeFile(); closeFile();
if(!_bDownloadSuccess){
File::delete_file(_filePath.data());
}
if(_onResult){ if(_onResult){
_onResult(ex.getErrCode(),ex.what(),_filePath.data()); _onResult(ex.getErrCode(),ex.what(),_filePath.data());
_onResult = nullptr; _onResult = nullptr;

View File

@ -38,6 +38,7 @@ private:
FILE *_saveFile = nullptr; FILE *_saveFile = nullptr;
string _filePath; string _filePath;
onDownloadResult _onResult; onDownloadResult _onResult;
bool _bDownloadSuccess = false;
}; };
} /* namespace Http */ } /* namespace Http */