因为最近项目在做电子书功能,涉及到了文件的下载和断点续传,找了以前学习的代码做了一些修改,只需两个类即可实现文件下载、断点续传、下载进度显示,使用也很简单,导入头文件后下载和暂停下载示例如下,更详细结尾会上传demo:
点击下载核心代码:
[[HMDownloadManager sharedManager] downloadFileWithUrlString:self.urlString downloadBlock:^(float progress, long long currentLength) {
// self.urlString 为文件在服务器的地址
// progress 就是当前的进度值,可以设置进度显示.
}];
暂停下载:
- (IBAction)pause:(id)sender
{
NSDictionary *operations = [HMDownloadManager sharedManager].operations;
HMDownloadOperation *op = operations[self.urlString];
// 仅仅是将网络断开了,操作依然存在!
[op.conn cancel];
op.conn = nil;
// 移除操作缓存中的操作. 目的:可以再次添加下载操作的时候,可以重新加入一个相同的下载操作!
[[HMDownloadManager sharedManager].operations removeAllObjects];
}
其他:下载后默认保存到document下,保存的文件名为下载的文件名。
判断逻辑:
点击下载先判断文件是否存在。文件不存在则重新下载。文件存在再根据本地文件和服务器文件大小做对比,本地文件小则做断点续传,本地文件大文件错误重新下载,本地文件等于服务器文件大小则文件下载成功不需要下载。
demo稍后会上传到GitHub,欢迎Star。
附录:服务器是否支持断点续传,如果服务器不支持就把断点续传那块换成重新下载即可。
另外我本人维护的几个《iOS从入门到精通系列》专题,不定期更新,都是工作中实用并筛选过的,欢迎各位道友关注和共同维护。
iOS从入门到精通 ∷ 工作篇
iOS从入门到精通 ∷ 界面篇
iOS从入门到精通 ∷ 网络篇
iOS从入门到精通 ∷ 面试篇