gpt4 book ai didi

objective-c - 在 FTP 下载时获取文件大小

转载 作者:行者123 更新时间:2023-11-28 17:46:10 33 4
gpt4 key购买 nike

我正在测试苹果的“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”案例将不会被处理。我怎样才能让它工作?失败在哪里?我想显示下载状态的进度条 - 所以我需要之前的完整文件大小。

我希望你能帮我解决这个问题。谢谢!

最佳答案

我很确定当您设置 kCFStreamPropertyFTPFetchResourceInfo 时,这意味着您只对特定请求中的资源大小感兴趣。

您可能应该创建一个新的 Controller ,它是 GetController 的子类,将其称为 StatController...将 _startReceive 和流处理程序覆盖到您的新方法。

在开始异步下载之前使用 StatController 获取资源大小。

关于objective-c - 在 FTP 下载时获取文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823475/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com