我有一个API可以生成签名的下载链接,并在短时间内过期。我想添加恢复下载的功能,但如果资源的URL发生更改,则URLSession API不会提供恢复下载的本机功能。当下载URL更改时恢复下载
我试图解决这个问题的方法是跟踪暂停时下载的字节数,存储下载的数据blob,获取新的签名下载url,使用Range头继续下载,然后将所有数据blob连接在一起当下载完成时。
下面是用来启动下载的代码:
let session = URLSession(configuration: URLSessionConfiguration.default, delegate: self, delegateQueue: nil)
let task = session.downloadTask(with: signedURL)
self.sessionDownloadRequest = task
,我面对的是,恢复数据的VAR似乎并不实际包含已下载的数据的问题。
self.sessionDownloadRequest.cancel(byProducingResumeData: { (data) in
print(data.count) //This surprisingly always returns the same count
}
无论在暂停之前我让下载继续多久,该数据blob的大小似乎总是相同。在哪里/如何访问下载的大量数据?
谢谢!
你还没有显示任何相关的代码,所以谁知道你在做什么,对或错? – matt
@matt,我添加了最初的请求代码。只是为了澄清,我没有遇到任何问题,例如获取新的已签名URL,恢复具有特定范围的下载或数据blob的连接,所以我没有包含这些代码以保持问题的简洁。如果您还有其他想看的东西,请告诉我。 – neilb