一个用于 iOS 的 SFTP 客户端库和示例应用程序,使用 libssh2
DLSFTPClient 是围绕 libssh2 的一个 Objective-C 封装,提供简单上传和下载文件以及进行目录操作的方法。它需要 iOS 5.1。
截至 2013 年 6 月 1 日,DLSFTPClient 被认为是稳定的。没有计划进一步更改 API,尽管可能会继续努力进一步利用 Grand Central Dispatch。
您需要使用主机和凭据初始化一个 DLSFTPConnection
对象。支持简单的用户名/密码以及私钥认证。
DLSFTPConnection *connection = [[DLSFTPConnection alloc] initWithHostname:@"foo.bar.com"
port:22
username:@"username"
password:@"password"];
要建立连接,使用 connectWithSuccessBlock:failureBlock:
DLSFTPClientSuccessBlock successBlock = ^{ ... };
DLSFTPClientFailureBlock failureBlock = ^(NSError *error) { ... };
[connection connectWithSuccessBlock:successBlock
failureBlock:failureBlock];
要断开连接,使用 disconnect
[connection disconnect];
成功和失败回调被调度到全局并发队列。如果您需要驱动 UI 更新,请确保调度回主队列。
如列出目录内容、下载文件、移动/重命名等操作是通过 DLSFTPRequest
的子类来完成的
DLSFTPClientArraySuccessBlock successBlock = ^(NSArray *files) {
for (DLSFTPFile *sftpFile in files) {
NSLog(@"File: %@", sftpFile.filename);
}
};
DLSFTPClientFailureBlock failureBlock = ^(NSError *error) {
NSLog(@"Error listing files: %@", error);
};
DLSFTPRequest *request = [[DLSFTPListFilesRequest alloc] initWithDirectoryPath:@"/Users/dan/"
successBlock:successBlock
failureBlock:failureBlock];
[connection submitRequest:request];
DLSFTPFile
类用于封装文件路径和元数据。
在上传和下载文件时,可以提供一个进度块。连接将调度进度块,它在传输文件时会调用,并可用于监控进度。
DLSFTPClient 包括两个测试用例类。要使用它们,您需要将 ConnectionInfo-template.plist
复制到 ConnectionInfo.plist
并使用您自己的服务器的凭据和文件路径更新值。为了测试私钥认证,您还需要添加一个 privatekey.pem
文件。
示例应用程序不完整,需要一些润色。
DLSFTPClient 在BSD许可证下开源。更多信息请参阅LICENSE文件。