[FIXED] Wie lade ich eine Datei schnell herunter?

Ausgabe

Ich habe gerade angefangen, Apple Swift-Programmierung für iOS von Android zu lernen. Ich kann jetzt im Grunde Swift-Code lesen und manipulieren und habe auch einige gängige Klassen gelernt, die in der iOS-Swift-Programmierung verwendet werden, aber ich habe immer noch etwas Verwirrung mit der Syntax und allem.

Ich versuche, eine Datei herunterzuladen. Sagen wir einfach, von dieser URL kommend

var url = "http://www.mywebsite.com/myfile.pdf"

in einem Knopfdruck. Vielleicht auch mit visuellem Fortschritt

Durch die Suche hier im Stackoverflow bin ich auf Alamofire gestoßen. Ich könnte es versuchen, aber ich bin mir nicht sicher, ob dies der beste Weg für mich ist, es zu tun.

Daher möchte ich fragen, wie und welche Optionen (iOS7 und iOS8) ich habe, um mein Ziel zu erreichen. Außerdem wären Vor- und Nachteile super!

Lösung

Beispiel-Downloader-Klasse ohne Alamofire:

class Downloader {
    class func load(URL: NSURL) {
        let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)
        let request = NSMutableURLRequest(URL: URL)
        request.HTTPMethod = "GET"
        let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
            if (error == nil) {
                // Success
                let statusCode = (response as NSHTTPURLResponse).statusCode
                println("Success: \(statusCode)")

                // This is your file-variable:
                // data
            }
            else {
                // Failure
                println("Failure: %@", error.localizedDescription);
            }
        })
        task.resume()
    }
}

So verwenden Sie es in Ihrem eigenen Code:

class Foo {
    func bar() {
        if var URL = NSURL(string: "http://www.mywebsite.com/myfile.pdf") {
            Downloader.load(URL)
        }
    }
}

Swift 3-Version

Beachten Sie auch, große Dateien auf die Festplatte statt in den Arbeitsspeicher herunterzuladen. siehe `downloadTask:

class Downloader {
    class func load(url: URL, to localUrl: URL, completion: @escaping () -> ()) {
        let sessionConfig = URLSessionConfiguration.default
        let session = URLSession(configuration: sessionConfig)
        let request = try! URLRequest(url: url, method: .get)

        let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
            if let tempLocalUrl = tempLocalUrl, error == nil {
                // Success
                if let statusCode = (response as? HTTPURLResponse)?.statusCode {
                    print("Success: \(statusCode)")
                }

                do {
                    try FileManager.default.copyItem(at: tempLocalUrl, to: localUrl)
                    completion()
                } catch (let writeError) {
                    print("error writing file \(localUrl) : \(writeError)")
                }

            } else {
                print("Failure: %@", error?.localizedDescription);
            }
        }
        task.resume()
    }
}


Beantwortet von –
Devran Cosmo Uenal


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] Datei von github in CLI herunterladen?

Ausgabe Ich versuche, die tokyo-night-storm.yamlFarbschemadatei von zellij herunterzuladen. Ich dachte, ich könnte es einfach tun wget https://github.com/zellij-org/zellij/blob/main/example/themes/tokyo-night-storm.yaml aber…