iOS大文件下载/断点续传/自定义下载位置/完整库

一年前写过两篇类似的文章, 当时分别用了NSURLConnection和NSURLSession写的, 感觉写的不太满意, 今天翻文章的时候给删掉了. 现在又重新写了一个下载工具类, 实测没有什么问题
优点: 断点续传 / 占用内存小 / 实时查看下载状态 / 下载完成失败有回调 / 下载位置自定义 / 支持多任务同时下载 / 代码量少, 结构清晰.
缺点: 依赖FMDB!!!!!!!!!(只要工程中有FMDB即可, 无需做其他操作)
如果没有FMDB库, 使用的是其它库, 你可以把我的工具中的"SmartFMDB"这个类重写一遍, 这里是数据库的二级封装类
看看效果:


不能上传超过5M的gif文件........所以就看看下载的时候这个内存的走势吧....
usage:
把DKDownloadManager拖进工程,

第一步: 
引入
import "DKDownloadManager.h"
第二步:
初始化下载管理器, 并持有代理
DKDownloadManager *manager = [DKDownloadManager defaultManager];
manager.delegate = self;
第三部:
开始下载了
[manager startDownloadWithURL:@"www.baidu.com********]"
第四部:
下载过程中的状态回调
可以参考代码的回调方法
可以拿到的数据有: 当前下载进度(实时监测) + 某文件已下载大小(实时监测) + 某文件的总大小 + 文件下载失败回调 + 文件下载完成回调

想要改变下载文件的位置和数据库的位置, 可以找到Assistance文件夹下的DKDownloadPrefix文件, 把下面三句话修改成你想要的路径即可

/** 数据库文件路径 */
#define DOWNLOAD_DB_PATH [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"DKDownload.sqlite"]
/** 下载的文件路径 */
#define DOWNLOAD_FILE_PATH(name) [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"/DKDownload"] stringByAppendingPathComponent:name]

/** 表名 */
#define TABLE_NAME @"downloadList"

附上地址:https://github.com/DuncanLii/DKDownloadManager_2017_07_17

你可能感兴趣的:(iOS大文件下载/断点续传/自定义下载位置/完整库)