使用Bound Streams上传NSURLSession后台文件

时间:2015-02-04 15:31:04

标签: ios objective-c file-upload nsurlsession nsstream

历史:

我正在开发一个我们需要支持的项目:

  • 后台使用NSURLSession上传文件。
  • 服务器希望使用Content-Type: multipart/form-data
  • 上传文件
  • 以前,我使用NSURLConnection绑定了一对Streams,如Apple Sample所示。
  • 现在,我希望使用NSURLSession(Background Session)uploadTaskWithStreamedRequest采用类似方法:。
  • 我写了一个小的独立iOS Sample + PHP服务器来验证我的概念。

问题:如果应用程序停留在前台,一切正常,但如果在上传过程中我按下主页键,则上传失败一段时间后出现错误:

  

Domain = NSURLErrorDomain Code = -997“与后台传输服务失去联系”

在上传失败之前,还会遇到Write / Producer Stream的NSStreamEventEndEncountered

注意:我知道我可以将整个HTTP Post主体写入临时文件并使用NSURLSession's文件上传API。但如果我能使其发挥作用,则上述更合适。

问题:有人可以猜出上传失败的可能原因是什么?

示例代码:我已将iOS示例代码+ PHP服务器代码上传到丢弃框。这是CODE

谢谢!

1 个答案:

答案 0 :(得分:0)

您无法使用后台配置上传流式任务。我只在两种情况下成功上传数据:

  1. 使用存储在请求正文中的数据下载任务。
  2. 从文件上传任务。在这种情况下,您将不会收到回复正文。