我需要从iOS设备上传大量照片到服务器。例如,500张照片。我该怎么办?
我为每张照片创建了带有NSURLSession的后台会话配置的上传任务。我尝试制作自己的自定义队列,其中每个下一个任务将在完成上一个任务后启动。但有一刻,新的任务还没有开始。我想,因为这一切都发生在后台。有关此问题的更多信息,请参阅here
(如果有一个队列的方法是正确的,请你建议很好地实现异步任务的队列,因为我可能在我的实现中弄乱了一些东西)
所以在上面链接的文章之后,我的猜测是我应该立刻开始所有上传任务(不是一个接一个)。但我有效率问题。如果我要为每张照片创建一个任务,它将会有500个背景异步任务和大约1千兆字节的并行数据上传。我想,这会导致网络出现问题。
总结上述所有内容,这是在iOS中背景上传大片数据的正确方法(在我的情况下是500张照片)?
答案 0 :(得分:2)
不幸的是,由于糟糕的设计决策,Apple的API在这项任务中很糟糕。您面临几个主要障碍:
我怀疑最好的方法是:
需要注意的是,所有这一切都必须很快完成。您可能会发现有必要提前将文件预先合并到ZIP存档中以避免被杀死。但是不要试图将它们组合成一个文件,因为在重试时截断头部时你会花费太长时间。
如果你还没有撞到墙上,你很快就会出现。 : - )
答案 1 :(得分:0)
要下载这么多图像,您可能需要询问 用户不要停止应用程序或进入后台模式。
因为在这两种情况下,我们无法完成这么大的任务。
如果用户手机处于活动状态,
创建与每个上传过程相对应的NSoperation
。在你的情况下,它可能是500左右。
然后将NSOperations
添加到名为NSOperationQueue
的队列中,然后启动NSOperationQueue
任务。
它将逐一执行。
有关缓存和所有内容的详细信息,请按照SO POST
进行操作