实现断点续传需要改变请求头:
/*
表示头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"];
其他的在代理方法中实现,可以监听下载进度:
1、首先需要创建文件保存的路径:
NSFileManager *manager = [NSFileManager defaultManager];
//创建文件,其中fullpath需要自己创建;
[manager createFileAtPath:fullPath contents:nil attributes:nil];
//创建文件句柄,指向数据写入的文件
self.handle = [NSFileHandle fileHandleForWritingAtPath:self.fullPath];
//指向从文件的末尾
[self.handle seekToEndOfFile];
3、将获取到的数据,用文件句柄存入文件目录;
[self.handle writeData:data];
4、关闭文件句柄;
[self.handle closeFile];
self.handle = nil;
还可以使用输出流控制第一步是一样的:
2、可以创建输出流储存文件;
//创建输出流,是否追加
self.stream = [NSOutputStream outputStreamToFileAtPath:self.fullPath append:YES];
//开启输出流
[self.stream open];
3、然后通过输出流将获取的数据写入文件;
[self.stream write:data.bytes maxLength:data.length];
4、请求完成后需要关闭输出流
[self.stream close];
self.stream = nil;