【www.bbyears.com--安卓教程】
下面介绍如何使用第三方库 Rebekka 来进行FTP客户端的开发,实现的功能包括:FTP服务器连接,文件列表的查询,文件夹创建,上传文件,下载文件。
1,Rebekka的说明与配置
Rebekka是一个用Swift语言写的FTP/FTPS客户端操作库。其内部封装使用的是CFNetworking网络库的CFFTPStream API。
下载地址:https://github.com/Constantine-Fry/rebekka(1)把“Rebekka.xcodeproj”拖入到项目中来
(2)在“项目” -> “Build Phases” -> “Target Dependencies”中把“RebekkaTouch”添加进来。
(3)在需要使用的时候 import 即可
(3)在需要使用的时候 import 即可
import RebekkaTouch
2,初始化连接配置
import UIKit
import RebekkaTouch
class ViewController: UIViewController {
var session: Session!
override func viewDidLoad() {
super.viewDidLoad()
var configuration = SessionConfiguration()
configuration.host = "ftp://ftp.hangge.com"
configuration.username = "ftpuser"
configuration.password = "123456"
session = Session(configuration: configuration)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
3,获取文件、文件夹列表并输出
下面把根目录下的所有文件、文件夹名字打印出来(当然还可以获取到其他信息,比如文件创建者,创建时间等等)
showList("/")
func showList(path: String) {
session.list(path) {
(resources, error) -> Void in
for item in resources!{
print("文件类型:\(item.type) 文件名称:\(item.name)")
}
}
}
4,新建文件夹
createDirectory("/upload/测试文件夹")
func createDirectory(path: String) {
session.createDirectory(path) {
(result, error) -> Void in
if result {
print("文件夹创建成功!")
}else {
print("文件夹创建失败: \(error)")
}
}
}
5,上传文件
func testUploadFile() {
//本地文件
let URL = NSBundle.mainBundle().URLForResource("logo", withExtension: "png")
//服务器路径以及保存的文件名
let path = "/upload/\(NSUUID().UUIDString).png"
//上传文件
session.upload(URL!, path: path) {
(result, error) -> Void in
if result {
print("文件上传成功!")
}else {
print("文件上传失败: \(error)")
}
}
}
6,下载文件
默认下载下来的文件是保存在临时文件夹下并随机命名的。我们可以在下载完毕的回调方法中将其移动到需要的目录(比如用户文档目录)并重命名。
func testDownloadFile() {
self.session.download("/upload/hangge.png") {
(fileURL, error) -> Void in
print("文件保存地址:\(fileURL)")
//下载下来的临时文件,要自行处理
/**
if let fileURL = fileURL {
do {
try NSFileManager.defaultManager().removeItemAtURL(fileURL) //删除临时文件
} catch let error as NSError {
print("Error: \(error)")
}
}**/
}
}