Gio
Gio

Reputation: 65

Simple Swift file download with URL

So I have the URL as string (in this case a JPG but would like a general procedure for any file type if possible) and I have the file path as string where I want to save the file.

What would be the fastest way to get this implemented?

Please keep in mind this is for OSX command line application. I tried few sample codes found here, mostly using UIImage but I get error:"Use of unresolved identifier", adding "import UIKit" gets me error:"No such Module". Please help!

import Foundation

let myURLstring = "http://www.safety.vanderbilt.edu/images/staff/Bob-Wheaton.jpg"
let myFilePathString = "/Volumes/HD/Staff Pictures/Bob-VEHS.jpg"

---> ABOVE IS THE ORIGINAL QUESTION <---

---> BELOW IS NEW IMPROVED CODE: WORKING <---

import Foundation

let myURLstring = "http://www.safety.vanderbilt.edu/images/staff/Bob-Wheaton.jpg"
let myFilePathString = "/Volumes/HD/Staff Pictures/Bob-VEHS.jpg"

let url = NSURL(string: myURLstring)
let imageDataFromURL = NSData(contentsOfURL: url)

let fileManager = NSFileManager.defaultManager()
fileManager.createFileAtPath(myFilePathString, contents: imageDataFromURL, attributes: nil)

Upvotes: 5

Views: 18410

Answers (2)

OlivierM
OlivierM

Reputation: 3192

With Swift 4, the code will be:

if let url = URL(string: myURLstring) {
    let imageDataFromURL = try Data(contentsOf: url)
}

Upvotes: 4

Nate Cook
Nate Cook

Reputation: 93276

If you're writing for OS X, you'll use NSImage instead of UIImage. You'll need import Cocoa for that - UIKit is for iOS, Cocoa is for the Mac.

NSData has an initializer that takes a NSURL, and another that takes a file path, so you can load the data either way.

if let url = NSURL(string: myURLstring) {
    let imageDataFromURL = NSData(contentsOfURL: url)
}

let imageDataFromFile = NSData(contentsOfFile: myFilePathString)

Upvotes: 5

Related Questions