Swift實現FTP用戶端的製作(使用Rebekka庫)

來源:互聯網
上載者:User

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

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.