@SanMao
2015-08-11T15:08:13.000000Z
字数 1803
阅读 1176
网络
- (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];
}
}
接收到服务器返回的数据
[self.handle seekToEndOfFile];
[self.handle writeData:data];
// 计算当前接收到得数据的总数
self.currentLength += data.length;
// 计算下载比例
self.progressView.progress = 1.0 * self.currentLength/self.totalLength;
接收完毕
[self.handle closeFile];
self.handle = nil;
// 创建一个输出流
/*
第一个参数: 告诉系统数据流需要输出到哪
第二个参数: 告诉系统如何输出, 如果传递YES, 代表着每次数据都是输出到上一次的屁股后面
*/
self.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:YES];
// 只要调用open方法, 就可以往指定的文件中输出数据
// 如果文件不存在就会自动创建一个
[self.outputStream open];
/*
第一个参数: 传入需要写入的数据
第二个参数: 告诉系统写入的数据有多长
*/
[self.outputStream write:data.bytes maxLength:data.length];
[self.outputStream close];
self.outputStream = nil;