2010-01-23 108 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