使用“暂停”和“恢复”功能从服务器下载数据

时间:2014-02-28 06:40:52

标签: ios iphone objective-c nsurlconnection nsdata

我想下载一个具有暂停/恢复功能的文件。我读了苹果文档,我得到了NSUrldownload支持相同,但它不适用于iOS。我正在尝试NSUrlconnection,但没有工作。 我不想使用任何第三方库,我想自己实现它,下面是我尝试的代码片段

NSString *fileName = [NSString stringWithFormat:@"~%@",[[url componentsSeparatedByString:@"/"] lastObject]];

int dataLength = [[self checkDocDirectoryforFileName:fileName] length];
//dataLength = 0;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];

[request setValue:@"audio/mpeg" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"bytes" forHTTPHeaderField:@"Accept-Ranges"];
[request setValue:@"Keep-Alive" forHTTPHeaderField:@"Connection"];
[request setValue:[NSString stringWithFormat:@"%d",dataLength] forHTTPHeaderField:@"Content-Length"];
NSLog(@"Request header  %@", [request allHTTPHeaderFields]);
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];

2 个答案:

答案 0 :(得分:1)

iOS 7.0及以上版本

NSURLSession ,尤其是 NSURLSessionDownloadTask 提供此功能。

  

NSURLSession API提供状态和进度属性   除了向代表提供此信息之外。它支持   取消,重新启动或恢复,以及暂停任务,以及它   提供恢复暂停,取消或失败的能力   下载他们离开的地方。

Take a look to the docs.

iOS 5.0及以上版本

我会使用AFDownloadRequestOperationTake a look at this thread

  

AFDownloadRequestOperation有   额外支持恢复部分下载,使用临时   目录并有一个特殊的块,有助于计算   正确的下载进度。

答案 1 :(得分:1)