继续上传NSData甚至连接丢失/用户点击主NSUrlConnection

时间:2013-09-18 09:51:50

标签: iphone objective-c asynchronous uiimage nsurlconnection

我需要通过我为ios6开发的iPhone应用程序通过HTTP Post NSData上传视频文件的UIImageNSUrl

我需要支持以下案例:

  1. 用户点击了主页 - 继续在后台上传
  2. 连接丢失 - 即使用户通过单击主页按钮离开应用程序,也可以在有新的互联网连接时继续上传。
  3. 用户退出应用程序(点击x)并且正在上传,下次他将打开应用程序,它将继续
  4. 案例2和3:

    1. 它将从NSData中的相同位置继续(不是从文件的开头开始)
    2. 它将在新调用中发送变量index = {index}(其中index是从0开始继续的次数
    3. 我知道如何使用NSURLConnection作为异步连接。但是如何支持以上3个案例?

1 个答案:

答案 0 :(得分:2)

为此,你需要做两件事:

  1. 持续存储的已记录数据已上载到服务器的记录。
  2. 接受Content-Range标头并可以处理存储部分上传并稍后完成的服务器。 (或具有处理相同功能的API的服务器)。
  3. 如果您同时拥有这两项内容,则可以使用NSURLConnection及其委托方法NSUserDefaults(或类似方法)来执行任务,以存储进度信息和subdataWithRange:(或者可能) NSFileHandle)只获取需要上传的数据。


    查看使用connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:获取已发送数据的更新。将该号码(如果不是所有数据都已发送)存储到用户默认值中。发送完所有数据后,从用户默认值中删除该号码。

    通过创建从存储的号码到subdataWithRange:的范围来使用(total length of data - the number