下面介紹如何使用第三方庫 Rebekka 來進行FTP客戶端的開發,實現的功能包括:FTP服務器連接,文件列表的查詢,文件夾創建,上傳文件,下載文件。
1,Rebekka的說明與配置
Rebekka是一個用Swift語言寫的FTP/FTPS客戶端操作庫。其內部封裝使用的是CFNetworking網絡庫的CFFTPStream API。
下載地址:https://github.com/Constantine-Fry/rebekka(1)把“Rebekka.xcodeproj”拖入到項目中來
(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)")
}
}**/
}
}