Answer the question
In order to leave comments, you need to log in
Saving same videos in swift?
Good afternoon friends
There is a method that I use to save video files in the application. But it does not save the same video, which is extremely required. The problem is in this line.
if !FileManager.default.fileExists(atPath: documentsDirectoryURL.appendingPathComponent(videoURL.lastPathComponent).path) {
guard let videoURL = URL(string: i) else { return }
guard let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
// check if the file already exist at the destination folder if you don't want to download it twice
if !FileManager.default.fileExists(atPath: documentsDirectoryURL.appendingPathComponent(videoURL.lastPathComponent).path) {
// set up your download task
URLSession.shared.downloadTask(with: videoURL) { (location, response, error) -> Void in
// use guard to unwrap your optional url
guard let location = location else { return }
// create a deatination url with the server response suggested file name
let destinationURL = documentsDirectoryURL.appendingPathComponent(response?.suggestedFilename ?? videoURL.lastPathComponent)
do {
try FileManager.default.moveItem(at: location, to: destinationURL)
PHPhotoLibrary.requestAuthorization({ (authorizationStatus: PHAuthorizationStatus) -> Void in
// check if user authorized access photos for your app
if authorizationStatus == .authorized {
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: destinationURL)}) { completed, error in
if completed {
print("Video asset created")
} else {
print(error)
}
}
}
})
} catch { print(error) }
}.resume()
} else {
print("File already exists at destination url")
}
), NSDestinationFilePath=/var/mobile/Containers/Data/Application/C00DF827-E2C7-479D-8569-26BC84724F67/Documents/20955097_824456947720366_7510952727510253568_n.mp4, NSFilePath=/private/var/mobile/Containers/Data/Application/C00DF827-E2C7-479D-8569-26BC84724F67/tmp/CFNetworkDownload_w7z5UB.tmp, NSUnderlyingError=0x17404eeb0 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}
Answer the question
In order to leave comments, you need to log in
// -
try FileManager.default.moveItem(at: location, to: destinationURL)
// +
if fileManger.fileExists(atPath: destinationURL.path) {
try fileManger.removeItem(at: destinationURL)
}
try FileManager.default.moveItem(at: location, to: destinationURL)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question