我正在使用苹果的“ SimpleFTPSample ”项目进行测试,以了解 ftp 与 iOS 的工作原理。我在“GetController.m”中添加了两行来获取要下载的文件的大小。
-(void)_startReceive
{
.
.
.
// Open a CFFTPStream for the URL.
ftpStream = CFReadStreamCreateWithFTPURL(NULL, (CFURLRef) url);
CFReadStreamSetProperty(ftpStream, kCFStreamPropertyFTPFetchResourceInfo, kCFBooleanTrue); // Added: To get file size
.
.
.
}
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
.
.
.
switch (eventCode) {
case NSStreamEventOpenCompleted: {
// Added: Finally get filesize
fileSize = [[self.networkStream propertyForKey:(id)kCFStreamPropertyFTPResourceSize] integerValue];
[self _updateStatus:@"Opened connection"];
} break;
.
.
.
}
现在我得到了正确的文件大小(fileSize),但之后下载将无法开始。“NSStreamEventHasBytesAvailable”的情况不会被处理。我怎样才能让它工作?失败在哪里?我想显示下载状态的进度条 - 所以我之前需要完整的文件大小。
我希望你能帮我解决这个问题。谢谢!