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

How to resume downloads of large files in ios

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

恢复数据 blob 包含实际接收到的数据。如果是这样,您将无法在 32 位架构上继续下载 multi-gigabyte 文件。

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

  • A URL 在存储临时文件的磁盘上。
  • 指示抓取开始时间的时间戳,以便它可以询问服务器自那时起文件是否已更改。
  • 请求URL.
  • 请求集headers.
  • 可能是一些 UUID。

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

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