2010-01-23 109 views
0

我正在使用apple的simpleFTPsample。我想显示正在下载的文件的进度条。我理解它需要做的:
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
的情况下:
case NSStreamEventOpenCompleted: 获取使用FTP下载的文件大小

我如何从NSInputStream retrive文件的大小?

我也曾尝试:

我已设置:
[self.networkStream setProperty:@"YES" forKey:(id)kCFStreamPropertyFTPFetchResourceInfo];
然后:
NSLog(@"size: %@",[self.networkStream propertyForKey:(id)kCFStreamPropertyFTPResourceSize]);
但结果是空...

回答

2

你将不得不将kCFStreamPropertyFTPFetchResourceInfo设置为true。这样CFFTPStream会发送一个STAT命令到FTP服务器来获取文件信息,包括总大小。

+0

谢谢,但它不工作。我已经改变了这个问题,以包括你的答案。我错了吗? – iddober 2010-01-23 18:13:19

+1

也许不是@“YES”,你需要[NSNumber numberWithBool:YES]。另外,服务器将不得不支持这一点。调试这种方法是运行tcpdump并查看CFStream实际发送到服务器的内容。 – 2010-01-24 02:51:57

0

为了让你只需要文件大小:

case NSStreamEventOpenCompleted: { 
     fileSize = [[self.networkStream propertyForKey:(id)kCFStreamPropertyFTPResourceSize] integerValue];} 

通过你知道如何让FTP服务器的文件的修改日期的方式?

+0

这只适用于在打开流后有以下情况: [self.networkStream setProperty:kCFBooleanTrue forKey:kCFStreamPropertyFTPFetchResourceInfo]; 否则你只会得到零。 – 2012-07-25 18:32:56

+0

仅供参考,尺寸是文档所说的唯一可以以这种方式检索的。 – 2012-07-25 18:34:11