/*
*点击下载按钮
*/
- (IBAction)begin:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_03.mp4"];
//请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
/*
表示头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"];
//发送请求
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
self.conn = conn;
}
/*
*取消下载
*/
- (IBAction)stop:(id)sender
{
[self.conn cancel];
}
#pragma mark - NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
if (self.currentLength > 0)
{
return;
}
//文件类
NSFileManager *manager = [NSFileManager defaultManager];
//沙盒路径
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
//拼接文件
NSString *fullPath = [caches stringByAppendingPathComponent:response.suggestedFilename];
//创建文件
[manager createFileAtPath:fullPath contents:nil attributes:nil];
//每一次都接收新的总数
self.totoleLength = response.expectedContentLength + self.currentLength;
//创建文件句柄
self.handle = [NSFileHandle fileHandleForWritingAtPath:fullPath];
//从数据最后开始写入数据
[self.handle seekToEndOfFile];
//输出流
/*self.stream = [NSOutputStream outputStreamToFileAtPath:fullPath append:YES];
[self.stream open];*/
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//当前文件进度
self.currentLength += data.length;
//写入文件中
[self.handle writeData:data];
/*输出流写入数据
[self.stream write:data.bytes maxLength:data.length];
*/
//进度条
self.progress.progress = 1.0 * self.currentLength / self.totoleLength;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//关闭文件句柄
[self.handle closeFile];
self.handle = nil;
/**
[self.stream close];
self.stream = nil;
*/
}
/*
4.当请求失败的时候调用该方法
*/
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"Error");
}
大文件断点下载(NSURLConnection)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- iOS开发中经常会用到文件的下载与上传功能,今天咱们来分享一下文件下载的思路。文件上传下篇再说。 文件下载分为:小...
- 废话不说,上效果图: 部分一:NSURLSession 界面的布局 效果: 下载任务的创建,因为需要断点续传所以设...