iOS大文件下载~1GB文件

时间:2013-08-22 11:48:37

标签: ios download large-files

对于我的学士论文,我必须为iOS实施一个电子学习应用程序。正如您在标题中看到的那样,我必须在文档目录中下载一个大小接近1或2 GB的文件。我是iOS-Development的新手,所以我很感激每一个提示我如何处理它。

非常感谢提前!

2 个答案:

答案 0 :(得分:1)

您阅读了NSURLConnectionASIHTTP的好处。但是你必须意识到ASIHTTP不再被积极开发/维护。 NSURLConnection有助于理解和学习基础知识。

对于日常使用,我建议您使用AFNetworking。它使用简单,包含了解如何使用它的示例。

为了下载大文件,建议将下载的数据直接写入文件,而不是将其存储在内存中。使用AFNetorking you can do this by

operation.outputStream = [NSOutputStream outputStreamToFileAtPath:@"download.zip" append:NO];

我没有尝试过自己下载那些大数据,但我相信这对你来说是一个很好的起点。

AFNetworking https://github.com/AFNetworking/AFNetworking
API文档http://cocoadocs.org/docsets/AFNetworking/2.0.0-RC2/

快乐的编码!

答案 1 :(得分:0)

好吧,因为这很可能需要一段时间才能下载,我肯定会建议使用NSURLRequestsNSURLConnections异步执行此操作。

我最关心的是这个下载的纯粹大小以及它可能不适合RAM,所以这个下载实际上可能并不像看起来那么容易。你可以尝试一下,但我建议如果可能的话将其分成多个文件/下载。

当我找到我之前写的代码时,我会在一分钟后发布代码。

已添加代码

首先,让您需要进行下载的课程为NSURLConnectionDelegate`NSURLConnectionDataDelegate

然后您可以按如下方式实现下载请求。

NSMutableData *linkData = [[NSMutableData alloc] init];
NSURLRequest *linkRequest = [[NSURLRequest alloc] initWithURL:youURL cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:10.0];
NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:linkRequest delegate:self];

变量linkData应该在接口文件中真正声明,然后在实现中分配,但为了简洁起见,我刚刚创建了它。

然后你需要以下方法,这些方法将被称为

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [linkData appendData:data];
}

-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
     // handle a fail
}

-(void) connectionDidFinishLoading:(NSURLConnection *)connection {
    // do what you need when download finishes
}