[关闭]
@SanMao 2015-08-11T15:08:13.000000Z 字数 1803 阅读 1176

断点下载

网络


断点下载重点

  1. - (IBAction)btnClick:(UIButton *)sender {
  2. // 1.切换按钮图片
  3. sender.selected = !sender.selected;
  4. // 2.判断是否是继续下载
  5. if (sender.selected) {
  6. // 继续下载
  7. NSLog(@"继续下载");
  8. NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_02.mp4"];
  9. NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
  10. // 只要设置HTTP请求头的Range属性, 就可以实现从指定位置开始下载
  11. /*
  12. 表示头500个字节:Range: bytes=0-499
  13. 表示第二个500字节:Range: bytes=500-999
  14. 表示最后500个字节:Range: bytes=-500
  15. 表示500字节以后的范围:Range: bytes=500-
  16. */
  17. NSString *range = [NSString stringWithFormat:@"bytes %zd-", self.currentLength];
  18. [request setValue:range forHTTPHeaderField:@"Range"];
  19. self.con = [NSURLConnection connectionWithRequest:request delegate:self];
  20. }else
  21. {
  22. // 暂停
  23. NSLog(@"暂停");
  24. [self.con cancel];
  25. }
  26. }

大文件的下载

也可以接收到服务器响应的时候创建一个文件流(NSOutputStream)

  1. // 创建一个输出流
  2. /*
  3. 第一个参数: 告诉系统数据流需要输出到哪
  4. 第二个参数: 告诉系统如何输出, 如果传递YES, 代表着每次数据都是输出到上一次的屁股后面
  5. */
  6. self.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:YES];
  7. // 只要调用open方法, 就可以往指定的文件中输出数据
  8. // 如果文件不存在就会自动创建一个
  9. [self.outputStream open];
  1. /*
  2. 第一个参数: 传入需要写入的数据
  3. 第二个参数: 告诉系统写入的数据有多长
  4. */
  5. [self.outputStream write:data.bytes maxLength:data.length];
  1. [self.outputStream close];
  2. self.outputStream = nil;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注