Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Simple Swift file download with URL

Tags:

xcode

macos

swift

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)
like image 966
Gio Avatar asked Oct 16 '14 15:10

Gio


2 Answers

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)
like image 141
Nate Cook Avatar answered Nov 15 '22 07:11

Nate Cook


With Swift 4, the code will be:

if let url = URL(string: myURLstring) {
    let imageDataFromURL = try Data(contentsOf: url)
}
like image 25
OlivierM Avatar answered Nov 15 '22 05:11

OlivierM