可以作为FTP服务器托管iOS应用程序文档目录的库

可以作为FTP服务器托管iOS应用程序文档目录的库,ios,ftp,Ios,Ftp,我有一个iOS应用程序,它可以创建一些文件,并允许用户检索这些文件。我已经实现了iTunes文件共享和AirDrop。但有时,将所有文件作为FTP服务器托管会更容易,因此将多个文件复制到计算机中会更容易。但是,我在iOS中还没有找到任何可以作为FTP服务器承载文件的库。我确实在GitHub上找到了。但它说它只用于调试,当我实际尝试它时,它也不太稳定 什么是一个好的FTP服务器API的iOS,我可以用来托管一些文件,他们都在我的应用程序的文档目录?如果它也支持写入目录就更好了。我使用urlComp

我有一个iOS应用程序,它可以创建一些文件,并允许用户检索这些文件。我已经实现了iTunes文件共享和AirDrop。但有时,将所有文件作为FTP服务器托管会更容易,因此将多个文件复制到计算机中会更容易。但是,我在iOS中还没有找到任何可以作为FTP服务器承载文件的库。我确实在GitHub上找到了。但它说它只用于调试,当我实际尝试它时,它也不太稳定

什么是一个好的FTP服务器API的iOS,我可以用来托管一些文件,他们都在我的应用程序的文档目录?如果它也支持写入目录就更好了。

我使用urlComponents访问我的ftp服务器。以下是获取文件并将其保存在阵列中的示例:

func getFiles(completionHandler: @escaping (Int) -> ()) {
    var urlComponents = URLComponents(string: nameOfFTPServer) // i.e. ftp://me.myserver.com
    urlComponents?.user = "username"
    urlComponents?.password = "password"
    let url = urlComponents?.url
    let request = URLRequest(url: url!)
    var myError = 0

    if url != nil {
        let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) -> Void in
            //no internet connection
            if data == nil || (data?.isEmpty)! {
                myError = NSURLErrorResourceUnavailable
                completionHandler(myError)
            }
            // If error is nil, everything's all good so get the data
            else if error == nil {
                if let data = data, let result = String(data: data, encoding: String.Encoding.ascii) {
                    let array = result.components(separatedBy: "\n")
                    completionHandler(myError)
                }
            }
            else {
                // everything is not all good, handle the error elsewhere
                print(myError!)
                myError = NSURLErrorTimedOut
                completionHandler(myError)
            }
        })

        task.resume()
    }
和另一个类中的完成处理程序:

getFTPFiles(completionHandler: { done in
    DispatchQueue.main.async {
        switch done {
        case 0: // data loaded
        case NSURLErrorResourceUnavailable, NSURLErrorTimedOut: // something went wrong
        default:
            self.tableView.reloadData()
        }
    }
}
这将为我获取一个文件名数组,稍后将其解析出来显示在tableView中,然后打开一个文件,我正在将PDF打开到webView中,如下所示:

func loadPDF(filename: String, folder: String){
    var urlComponents = URLComponents(string: nameOfServer)
    urlComponents?.user = "username"
    urlComponents?.password = "password"
    urlComponents?.path = "/" + folder + "/" + filename
    let url = urlComponents?.url
    if(url != nil){
        let requestObj = URLRequest(url: url!)
        webView.loadRequest(requestObj)
    }
    else{
        webView.loadHTMLString("<html><body><p>Check your internet connection</p></body></html>", baseURL: nil)
    }
}

我正在想办法用FTP托管文件。。。我真的不需要使用FTP检索文件。或者,如果没有库,您可以通过URLSession.uploadTaskWithRequest查找文档来实现这一点,以获取更多信息