断点下载

2015-12-06  本文已影响89人  SanMao_SFW

断点下载重点

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

大文件的下载

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

   // 创建一个输出流
   /*
    第一个参数: 告诉系统数据流需要输出到哪
    第二个参数: 告诉系统如何输出, 如果传递YES, 代表着每次数据都是输出到上一次的屁股后面
    */
   self.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:YES];
   // 只要调用open方法, 就可以往指定的文件中输出数据
   // 如果文件不存在就会自动创建一个
   [self.outputStream open];
    /*
     第一个参数: 传入需要写入的数据
     第二个参数: 告诉系统写入的数据有多长
     */
    [self.outputStream write:data.bytes maxLength:data.length];
 [self.outstream close];
- 数据接收完毕后关闭流

[self.outputStream close];
self.outputStream = nil;
上一篇 下一篇

猜你喜欢

热点阅读