如何在ios中恢复大文件的下载

Posted

技术标签:

【中文标题】如何在ios中恢复大文件的下载【英文标题】:How to resume downloads of large files in ios 【发布时间】:2018-04-24 11:46:30 【问题描述】:

我正在使用 URLSession 的 downloadTask 下载一个大文件。我面临的问题是如何提供暂停和恢复功能。我已经读过使用 resumeData 取消 downloadTask 会返回 resumeData ,下次可以使用它来恢复下载。但是对于一个非常大的文件,这个 resumeData 可能非常大(我认为。取决于文件大小和下载暂停的阶段,它可能非常大)。我如何保存这个大的 resumeData 以便下次可以使用它来恢复下载。 还可以同时下载多个,同样的问题更加增加了。

【问题讨论】:

developer.apple.com/documentation/foundation/url_loading_system/… 【参考方案1】:

简历数据块包含实际接收到的数据。如果是这样,您将无法在 32 位架构上继续下载数 GB 的文件。

它包含的是一堆用于传输的元数据:

磁盘上存储临时文件的 URL。 指示提取何时开始的时间戳,以便它可以询问服务器文件从那时起是否已更改。 请求 URL。 请求标头集。 可能是一些 UUID。

它可能只是磁盘上包含上述内容的元数据文件的 URL。我不确定是哪个。

无论哪种方式,您都不会获得数 GB 的 resumeData blob。那将是毁灭性的。下载任务的全部意义在于它下载到磁盘,而不是内存。

【讨论】:

以上是关于如何在ios中恢复大文件的下载的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase 存储中恢复文件下载?

在android中下载和暂停,恢复大文件的最佳方法? [复制]

从 HTTP 下载大文件并在 .NET 中支持恢复/重试?

如何在 Python 中恢复文件下载?

如何通过多线程概念下载单个文件

iOS 大文件断点下载