ios断点续传思路整理

设置断点续传的思路:

1获取文件下载路径下的文件大小,如果大小大于0,说明文件已经接收过或者接收完成。文件大小等于0的情况,文件正常下载。

2改变请求数据的位置,从当前文件的末尾开始下载。

NSString *requestRange = [NSString stringWithFormat:@"bytes=%llu-", downloadedBytes];

[request setValue:requestRange forHTTPHeaderField:@"Range"];

3设置NSURLSession,准备下载。

NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];

NSOperationQueue *queue = [[NSOperationQueue alloc]init];

self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:queue];

NSURLSessionDataTask *dataTask = [self.session dataTaskWithRequest:request];

[dataTask resume];

关于NSURLSession:NSURLSession的较详细教程

4此时数据开始下载,调用URLSession的delegate可以监听这个过程,因为数据是为一个个包的形式传输的(不知道理解的对不对),所以每次收到一个包需要移动节点到文件末尾然后继续写数据。

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data;

//向文件追加数据

NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:self.targetPath];

[fileHandle seekToEndOfFile]; //将节点跳到文件的末尾

[fileHandle writeData:data];//追加写入数据

[fileHandle closeFile];

5通过比对本地路径的数据大小与要下载的文件大小,判断文件是否下载完成。

以下是一个大神在最近10月份写的断点续传类,写的很好也很详细,正在研究中。


参考自大神的断点续传博客

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

推荐阅读更多精彩内容