美文网首页
ios断点续传思路整理

ios断点续传思路整理

作者: 顺其sun自然 | 来源:发表于2015-11-18 10:49 被阅读688次

    设置断点续传的思路:

    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月份写的断点续传类,写的很好也很详细,正在研究中。


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

    相关文章

      网友评论

          本文标题:ios断点续传思路整理

          本文链接:https://www.haomeiwen.com/subject/dzakhttx.html