how to use writeToFile to save image in document directory? how to use writeToFile to save image in document directory? swift swift

how to use writeToFile to save image in document directory?


The problem there is that you are checking if the folder not exists but you should check if the file exists. Another issue in your code is that you need to use url.path instead of url.absoluteString. You are also saving a jpeg image using a "png" file extension. You should use "jpg".

edit/update:

Swift 4.2 or later

// get the documents directory urllet documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!// choose a name for your imagelet fileName = "image.jpg"// create the destination file url to save your imagelet fileURL = documentsDirectory.appendingPathComponent(fileName)// get your UIImage jpeg data representation and check if the destination file url already existsif let data = image.jpegData(compressionQuality:  1.0),  !FileManager.default.fileExists(atPath: fileURL.path) {    do {        // writes the image data to disk        try data.write(to: fileURL)        print("file saved")    } catch {        print("error saving file:", error)    }}


This is my answer for Swift 3, combining the 2 answers above:

let documentsDirectoryURL = try! FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)// create a name for your imagelet fileURL = documentsDirectoryURL.appendingPathComponent("Savedframe.png")if !FileManager.default.fileExists(atPath: fileURL.path) {    do {        try UIImagePNGRepresentation(imageView.image!)!.write(to: fileURL)            print("Image Added Successfully")        } catch {            print(error)        }    } else {        print("Image Not Added")}


An extension method in swift 4.2

import Foundationimport UIKitextension UIImage {    func saveToDocuments(filename:String) {        let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!        let fileURL = documentsDirectory.appendingPathComponent(filename)        if let data = self.jpegData(compressionQuality: 1.0) {            do {                try data.write(to: fileURL)            } catch {                print("error saving file to documents:", error)            }        }    }}