使用NSURLConnection写一个简单的可断点续传的多任务下载管理器

最后上代码,先记录整体思路。不啰嗦,直接开始。

一.先实现下载工具(单个)

1.根据URL去服务器获取下载文件大小。

2.根据url判断本地是否存在之前下载的数据。

3.比较本地与服务器文件大小。

       如果本地文件为0,则开始下载。

       如果本地文件大于0小于服务器文件大小,则断点续传。

       如果本地文件等于服务器文件大小,则返回本地文件地址。

       如果本地文件大于服务器文件大小,则删除本地文件,重新进行下载操作。

4.如果下载,则使用NSURLConnection进行下载。前面的文章有讲解过NSURLConnection,去翻前面的东西具体查看,这里不细说。

5.使用block把下载进度,下载完成后的本地地址,失败的错误信息都回调回去。

6.实现暂停功能,也就是NSURLConnection的cancel。

关于断点续传,其实就是使用的NSMutableURLRequest中[request setValue:rangStr forHTTPHeaderField:@"Range"];来实现,rangStr为@"bytes=下载的起始大小-(选填结束的大小,如果不填则为下载后面所有内容)"。

二.截下来就是使用单例来管理下载

1.创建一个单例,在单例中根据URL来创建上面的下载工具。

2.在创建下载工具时,以防止创建下载任务。需要一个缓冲池,缓冲池为下载工具为值,URL的Path为键的字典。

3.如果下载任务存在,则return。如果不存在,就创建下载任务。

4.同样是以block的方式回调下载进度,下载完成后的本地地址,失败的错误信息。

5.在下载完成,暂停,下载失败,都必须把缓冲池中的对应数据给清掉。

6.以上的回调,除了下载进度是在子线程,其他的都是在主线程中完成。

 

代码中,直接抽取ZipoLeeDownLoadManager和LZPDownLoad就可以使用。看需扩展。ZipoLeeDownLoadManager这个是单例,也就是下载管理器。LZPDownLoad是下载工具。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值