【问题标题】:Continue an interrupted download on iPhone在 iPhone 上继续中断的下载
【发布时间】:2009-06-10 13:37:18
【问题描述】:

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

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

谁能帮帮我?

【问题讨论】:

    标签: ios file download resume


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 它看起来像我正在寻找的答案。非常感谢,pokeb。
    【解决方案2】:

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

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-16
        • 1970-01-01
        • 2012-06-21
        • 2012-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多