如何在IOS 9.1中通过FTP使用NSURLSessionStreamTask上传文件

时间:2015-12-22 05:37:29

标签: objective-c ftp nsurlsession

我正在尝试使用NSURLSessionStreamTask将CSV文件上传到FTP服务器,但它不起作用。 这是我的代码;

NSURLSession *session = [NSURLSession sharedSession];

NSString *uploadURL = [NSString stringWithFormat:@"ftp://%@:%@@%@", userName,password,IP];

NSURLSessionStreamTask *streamTask = [session streamTaskWithHostName:uploadURL port:21];

[streamTask writeData:pathData timeout:60.0 completionHandler:^(NSError * _Nullable error) {
    if (error) {
    NSLog(@"error");
    }
[streamTask closeWrite];
[streamTask stopSecureConnection];
return;
 }

NSLog(@"success");
[streamTask closeWrite];
[streamTask stopSecureConnection];
 }];
  }
   [streamTask resume];
}

我收到了此错误消息;

Error Domain=kCFErrorDomainCFNetwork Code=2 "(null)" UserInfo={kCFGetAddrInfoFailureKey=8

如果您能给我任何建议或提示,请告诉我。 我真的很感激。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您使用主机名填充streamTaskWithHostName: port:的第一个参数,这可能会有所帮助!你给它一个URL。没有编译时错误,因为您将URL作为NSString(而不是NSURL)传递。您不需要uploadURL变量;传递IP代替。

NSURLSessionStreamTask的要点是,在处理与Apple默认处理程序不同/不同的协议时,您自己使用NSURLSession系统的其余部分执行所有协议事务。换句话说,此代码不会为您执行FTP事务;你必须自己构建和发送命令。这种情况包括上传用户名和密码信息。