iOS 轻量级文件下载和断点续传

因为最近项目在做电子书功能,涉及到了文件的下载和断点续传,找了以前学习的代码做了一些修改,只需两个类即可实现文件下载、断点续传、下载进度显示,使用也很简单,导入头文件后下载和暂停下载示例如下,更详细结尾会上传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从入门到精通 ∷ 面试篇

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,532评论 25 708
  • 最近为儿子的教育搞得有点焦头烂额,是想不通现在给他的环境那么好,物质生活那么丰富,他怎么在生活上和学习上都表现那么...
    sai_8177阅读 245评论 0 0
  • 第一次领略“闲”的旨趣,大概是在一篇叫做《湖心亭看雪》的初中课文里。“……余住西湖。大雪三日,湖中人鸟声俱绝...
    不雕阅读 500评论 1 5