我正在尝试实现大文件的下载并向用户显示当前进度,但阻止:
-[AFURLConnectionOperation setDownloadProgressBlock:]
返回不正确bytesRead
and totalBytesRead
值(它们小于应有的值)。
例如:如果我有一个 90MB 的文件,当它完全下载时,最新的块调用setDownloadProgressBlock:
给我totalBytesRead
价值约30MB。另一方面,如果文件大小为 2MB,最新的块调用会给出正确的结果totalBytesRead
2MB 值。
AFNetworking 已从 github 更新到最新版本。
如果 AFNetworking 无法正确执行此操作,我可以使用什么解决方案?
Edit:我已经确定,即使文件未完全下载(每次使用相对较大的文件时都会发生这种情况)AFNetworking 也会在以下位置调用成功块:
-[AFHTTPRequestOperation setCompletionBlockWithSuccess:failure:]
我问过类似的问题here https://stackoverflow.com/questions/12722436/afimagerequestoperation-returns-image-that-not-downloaded-competely关于这个情况,但没有得到任何答复。
我可以检查下载的代码和实际文件大小,但是AFNetworking
没有用于继续部分下载的 API。
我对 AFNetworking 中的 setDownloadProgressBlock 没有任何问题。
wiki 解释了如何跟踪下载进度:https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ
对于进度跟踪,您不需要bytesRead
(在特定回调中写入的字节数)。
示例代码:
[downloadoperation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
float progress = ((float)totalBytesRead) / totalBytesExpectedToRead;
self.progressView.progress = progress;
}];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)