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

2016-07-22  本文已影响135人  白云之巅1992

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

上一篇下一篇

猜你喜欢

热点阅读