AFNetworking 2.0 如何恢复已取消的下载
AFNetworking 2.0 How to resume a cancelled download
我正在使用 AFHTTPSessionManager 作为基础 class 将我的应用程序的网络代码重写为 AFNetworking 2.0。我想重新实现我当前的下载实现,但我无法重新实现我的旧行为。
当前实施:
- 下载文件到 tmp 文件夹
- 如果下载成功移动文件到目标路径
- 如果下载failed/cancelled将下载的数据留在tmp文件夹中
- 如果用户想恢复下载(重新开始下载)检查tmp文件夹并在上次下载终止的位置恢复下载
当前方法:
为了开始下载,我使用了 AFURLSessionManager 方法 downloadTaskWithRequest:progress:destination:completionHandler:
。如果下载完成,调用 destination 和 completionHandler 块,一切正常。但是,如果我取消任务,只调用 completionHandler 块,我找不到已下载文件的位置,这是在正确位置恢复下载所必需的。要恢复下载,我会使用 downloadTaskWithResumeData:progress:destination:completionHandler:
方法。但是要获取已下载的数据,我需要 tmp 下载文件的路径。
问题:
如何获取终止下载文件的路径?
或者如何在不重新下载所有数据的情况下恢复此下载?
NSURLSessionDownloadTask
有 cancelByProducingResumeData:
方法。这将提供恢复下载所需的恢复数据对象。
可以将此恢复数据保存到文件中,稍后使用 downloadTaskWithResumeData:progress:destination:completionHandler
恢复它。
我正在使用 AFHTTPSessionManager 作为基础 class 将我的应用程序的网络代码重写为 AFNetworking 2.0。我想重新实现我当前的下载实现,但我无法重新实现我的旧行为。
当前实施:
- 下载文件到 tmp 文件夹
- 如果下载成功移动文件到目标路径
- 如果下载failed/cancelled将下载的数据留在tmp文件夹中
- 如果用户想恢复下载(重新开始下载)检查tmp文件夹并在上次下载终止的位置恢复下载
当前方法:
为了开始下载,我使用了 AFURLSessionManager 方法 downloadTaskWithRequest:progress:destination:completionHandler:
。如果下载完成,调用 destination 和 completionHandler 块,一切正常。但是,如果我取消任务,只调用 completionHandler 块,我找不到已下载文件的位置,这是在正确位置恢复下载所必需的。要恢复下载,我会使用 downloadTaskWithResumeData:progress:destination:completionHandler:
方法。但是要获取已下载的数据,我需要 tmp 下载文件的路径。
问题: 如何获取终止下载文件的路径? 或者如何在不重新下载所有数据的情况下恢复此下载?
NSURLSessionDownloadTask
有 cancelByProducingResumeData:
方法。这将提供恢复下载所需的恢复数据对象。
可以将此恢复数据保存到文件中,稍后使用 downloadTaskWithResumeData:progress:destination:completionHandler
恢复它。