iOS で ftp がどのように機能するかを理解するために、 Apple の「 SimpleFTPSample 」プロジェクトを使ってテストしています。ダウンロードするファイルのサイズを取得するために、「GetController.m」に2行を追加しました。
-(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」のケースは処理されません。どうすればこれを機能させることができますか? どこが失敗?ダウンロード状態の進行状況バーを表示したいので、前に完全なファイルサイズが必要です。
これで私を助けてくれることを願っています。ありがとう!