在iPhone上继续中断下载

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

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

有人可以帮帮我吗?

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

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

或者,通过查看现有数据的大小,找出已经下载了多少数据,并在NSMutableURLRequest上设置’Range’标题:

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

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

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

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

 - (void)connectionDidFinishLoading:(NSURLConnection *)connection 

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

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