【问题标题】:How to resume downloads of large files in ios如何在ios中恢复大文件的下载
【发布时间】:2018-04-24 11:46:30
【问题描述】:
我正在使用 URLSession 的 downloadTask 下载一个大文件。我面临的问题是如何提供暂停和恢复功能。我已经读过使用 resumeData 取消 downloadTask 会返回 resumeData ,下次可以使用它来恢复下载。但是对于一个非常大的文件,这个 resumeData 可能非常大(我认为。取决于文件大小和下载暂停的阶段,它可能非常大)。我如何保存这个大的 resumeData 以便下次可以使用它来恢复下载。
还可以同时下载多个,同样的问题更加增加了。
【问题讨论】:
标签:
ios
nsurlsessiondownloadtask
【解决方案1】:
简历数据块不包含实际接收到的数据。如果是这样,您将无法在 32 位架构上继续下载数 GB 的文件。
它包含的是一堆用于传输的元数据:
- 磁盘上存储临时文件的 URL。
- 指示提取何时开始的时间戳,以便它可以询问服务器文件从那时起是否已更改。
- 请求 URL。
- 请求标头集。
- 可能是一些 UUID。
它可能只是磁盘上包含上述内容的元数据文件的 URL。我不确定是哪个。
无论哪种方式,您都不会获得数 GB 的 resumeData blob。那将是毁灭性的。下载任务的全部意义在于它下载到磁盘,而不是内存。