实现断点续传需要改变请求头:
/*
表示头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;
本文介绍了一种断点续传技术的实现方法,通过修改HTTP请求头来控制文件的分段下载,并提供了使用文件句柄和输出流两种方式来保存部分下载的数据。
447

被折叠的 条评论
为什么被折叠?



