【发布时间】:2009-07-09 14:45:37
【问题描述】:
我的 iPhone 应用程序从 Internet 下载大文件(例如视频)。
我想显示一个进度条,所以我需要获取我尝试下载的远程文件的大小(当然是在下载之前)。
我搜索了一遍又一遍,但没有任何效果。有什么办法吗?
提前谢谢你。
【问题讨论】:
-
this 的副本。
我的 iPhone 应用程序从 Internet 下载大文件(例如视频)。
我想显示一个进度条,所以我需要获取我尝试下载的远程文件的大小(当然是在下载之前)。
我搜索了一遍又一遍,但没有任何效果。有什么办法吗?
提前谢谢你。
【问题讨论】:
如果您使用的是 URL 加载系统(NSURLRequest、NSURLConnection 等),请查看 NSURLConnection 的 expectedContentLength 是否有值。请注意,它可能是 NSURLResponseUnknownLength。
【讨论】:
好的,我终于得到答案了。
NSURLConnection 调用它的委托
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
好吧,我们需要查看 NSURLResponse 内部,找到预期的ContentLength
- (long long)expectedContentLength
返回值 接收者的预期内容长度,如果无法确定长度,则为 NSURLResponseUnknownLength。
【讨论】:
您需要一些机制让服务器向您报告大小。
我希望大多数服务器在响应中提供内容长度标头条目。那应该告诉你文件有多大。我假设您用于下载的任何类都会向您公开该信息。
【讨论】: