使用AFNetworking下载大文件

我试图实现一个大文件的下载并显示给用户当前的进度,但阻止:

-[AFURLConnectionOperation setDownloadProgressBlock:] 

返回不正确的bytesReadtotalBytesRead值(它们比它们应该小)。

例如:如果我有一个90MB的文件,当它完全下载时, setDownloadProgressBlock:最新块调用setDownloadProgressBlock:给我totalBytesRead值大约30MB。 另一方面,如果文件大小是2MB,则最新的块调用将给出正确的totalBytesRead 2MB值。

AFNetworking从github更新到最新版本。
如果AFNetworking无法正确执行,我可以使用什么解决scheme?

编辑:我已经确定,即使文件没有完全下载(这种情况发生每次相对较大的文件)AFNetworking调用成功块在:

 -[AFHTTPRequestOperation setCompletionBlockWithSuccess:failure:] 

我在这里问了一个类似的问题,但没有得到任何答案。
我可以检查下载的代码和真实的文件大小,但AFNetworking没有用于延续部分下载的API。

AFNetworking中的setDownloadProgressBlock没有问题。

维基解释了如何跟踪下载进度: https : //github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ

对于进度跟踪,您不需要bytesRead (在特定callback中写入的字节数)。

示例代码:

 [downloadoperation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { float progress = ((float)totalBytesRead) / totalBytesExpectedToRead; self.progressView.progress = progress; }]; 

phix23回答了我最初的问题,所以进展模块确实没有问题。 我正在回答我的编辑。

当成功阻止时

 -[AFHTTPRequestOperation setCompletionBlockWithSuccess:failure:] 

被称为,我可以比较下载的字节数与预期下载的字节数(这是不是很难在代码中实现)。 如果下载的字节数较less – 我可以继续从中断的地方下载文件。 要做到这一点,我在NSURLRequest使用Range http头,这里是更多的信息:
在iPhone上继续中断下载
如何在iPhone SDK上实现可恢复的文件下载

所以,AFNetworking的问题并不是(NSURLConnection具有相同的行为),但我认为,框架的开发者可以考虑到这种情况。