我使用NSURLConnection从iPhone上的网上下载大文件。我使用“didReceiveData”方法将数据附加到Documents文件夹中的文件。它工作正常。
如果下载中断(例如,因为用户按下了“主页”按钮),我希望能够在下次用户启动我的应用程序时继续下载,而不是从头开始!
任何人都可以帮助我?
答案 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标准,了解如何形成从特定偏移量开始传输资源的请求。我无法找到任何代码,抱歉。