使用NSURLSessionDataTask实现大文件离线断点下载(完整)
2017-07-16 01:37
357 查看
(1)关于NSOutputStream的使用
(2)关于网络请求请求头的设置(可以设置请求下载文件的某一部分)
(3)NSURLSession对象的释放
(4)优化部分
//1. 创建一个输入流,数据追加到文件的屁股上 //把数据写入到指定的文件地址,如果当前文件不存在,则会自动创建 NSOutputStream *stream = [[NSOutputStream alloc]initWithURL:[NSURL fileURLWithPath:[self fullPath]] append:YES]; //2. 打开流 [stream open]; //3. 写入流数据 [stream write:data.bytes maxLength:data.length]; //4.当不需要的时候应该关闭流 [stream close];
(2)关于网络请求请求头的设置(可以设置请求下载文件的某一部分)
//1. 设置请求对象 //1.1 创建请求路径 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_01.mp4"]; //1.2 创建可变请求对象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //1.3 拿到当前文件的残留数据大小 self.currentContentLength = [self FileSize]; //1.4 告诉服务器从哪个地方开始下载文件数据 NSString *range = [NSString stringWithFormat:@"bytes=%zd-",self.currentContentLength]; NSLog(@"%@",range); //1.5 设置请求头 [request setValue:range forHTTPHeaderField:@"Range"];
(3)NSURLSession对象的释放
-(void)dealloc { //在最后的时候应该把session释放,以免造成内存泄露 // NSURLSession设置过代理后,需要在最后(比如控制器销毁的时候)调用session的invalidateAndCancel或者resetWithCompletionHandler,才不会有内存泄露 // [self.session invalidateAndCancel]; [self.session resetWithCompletionHandler:^{ NSLog(@"释放---"); }]; }
(4)优化部分
01 关于文件下载进度的实时更新 02 方法的独立与抽取
相关文章推荐
- iOS开发之网络编程--3、NSURLSessionDataTask实现文件下载(离线断点续传下载)
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
- iOS开发网络篇 一一 NSURLSessionDataTask实现大文件离线断点下载(重点)
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
- iOS之网络—— NSURLSessionDataTask文件离线断点下载、NSURLSession文件上传、AFN基本使用、Cocoapods安装
- iOS网络-NSURLSessionDataTask大文件离线断点下载
- 文件断点下载(NSURLSessionDataTask)的使用
- iOS开发-使用NSURLSession实现文件断点下载,文件离线续传以及图片上传
- ios开发网络学习十一:NSURLSessionDataTask离线断点下载(断点续传)
- 使用NSURLSessionDownloadTask实现大文件下载-监听下载进度
- iOS NSURLSessionDownloadTask实现文件断点下载的方法
- ios:NSURLSessionDataTask做文件断点下载
- iOS-网络-NSURLSessionDataTask实现大文件下载,进度提示
- iOS边练边学--NSURLSessionDataTask实现文件真正的断点续传
- 通过NSURLSessionDownloadTask代理实现下载大文件
- ios断点续传:NSURLSession和NSURLSessionDataTask实现
- iOS NSURLSession 实现网络请求-文件下载-上传-后台下载
- 使用NSURLConnection实现大文件断点下载
- 关于Qt使用QNetworkAccessManager下载文件(实现断点续传功能)