在iPhone上继续中断下载

时间:2009-06-10 13:37:19

标签: ios file download resume

我使用NSURLConnection从iPhone上的网上下载大文件。我使用“didReceiveData”方法将数据附加到Documents文件夹中的文件。它工作正常。

如果下载中断(例如,因为用户按下了“主页”按钮),我希望能够在下次用户启动我的应用程序时继续下载,而不是从头开始!

任何人都可以帮助我?

3 个答案:

答案 0 :(得分:7)

ASIHTTPRequest易于使用支持恢复下载:

http://allseeing-i.com/ASIHTTPRequest/How-to-use#resume

或者,通过查看现有数据的大小,找出已下载的数据量,并在NSMutableURLRequest上设置“范围”标题:

[request addValue:@"bytes=x-" forHTTPHeaderField:@"Range"];

..其中x是您已经拥有的数据的字节大小。这将从字节x开始下载数据。然后,您可以在收到文件时将其附加到文件中。

请注意,您从中下载的Web服务器必须支持您尝试下载的资源的部分下载 - 如果是,则发送Accept-Ranges标头。您通常无法恢复动态生成内容的下载(例如,服务器上的脚本生成的页面)。

答案 1 :(得分:-1)

我能想到的唯一方法是将您正在下载的文件分解为较小的文件。

可以使用

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

确定文件的每个部分何时完成的方法,并在未下载的最后部分重新开始下载。

答案 2 :(得分:-1)

查看HTTP标准,了解如何形成从特定偏移量开始传输资源的请求。我无法找到任何代码,抱歉。