1

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

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

任何人都可以帮助我吗?

4

3 回答 3

7

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

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

或者,通过查看现有数据的大小来了解您已经下载了多少数据,并在NSMutableURLRequest上设置“范围”标头:

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

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

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

于 2009-06-11T07:51:33.483 回答
-1

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

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

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

于 2009-06-10T16:40:09.070 回答
-1

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

于 2009-06-11T05:41:34.997 回答