下面介紹如何使用第三方庫 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)")
}
}**/
}
}