Updated 26 October 2021
There are various ways to download the files from a URL but the best way to download it using Alamofire because it provides us various sub functionalities like:
a) downloadProgress : For showing the fraction completed while downloading the files.
b) validation : Allows to check the errors while downloading the files.
c) responseData: Contains the response for download.
Here is the code for using the Almofire for downloading from the URL :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
// MARK: - Load URL func downloadUsingAlamofire(url: URL, fileName: String) { let manager = Alamofire.SessionManager.default let destination: DownloadRequest.DownloadFileDestination = { _, _ in self.documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] self.documentsURL.appendPathComponent(fileName) print(self.documentsURL) return (self.documentsURL, [.removePreviousFile]) } manager.download(url, to: destination) .downloadProgress(queue: .main, closure: { (progress) in //progress closure print(progress.fractionCompleted) }) .validate { request, response, temporaryURL, destinationURL in // Custom evaluation closure now includes file URLs (allows you to parse out error messages if necessary) GlobalData.sharedInstance.dismissLoader() return .success } .responseData { response in if let destinationUrl = response.destinationURL as? URL { print(destinationUrl) if let statusCode = (response as? HTTPURLResponse)?.statusCode { print("Success: \(statusCode)") GlobalData.sharedInstance.dismissLoader() } let AC = UIAlertController(title:GlobalData.sharedInstance.language(key: "success"), message:GlobalData.sharedInstance.language(key: "filesavemessage"), preferredStyle: .alert) let okBtn = UIAlertAction(title: "view", style: .default, handler: {(_ action: UIAlertAction) -> Void in self.documentPathUrl = response.destinationURL //open file }) let noBtn = UIAlertAction(title: GlobalData.sharedInstance.language(key: "cancel"), style: .destructive, handler: {(_ action: UIAlertAction) -> Void in }) AC.addAction(okBtn) AC.addAction(noBtn) self.present(AC, animated: true, completion: { }) } else { GlobalData.sharedInstance.dismissLoader() } } } |
I hope from this, it will make you more comfortable using Alamofire functionality for downloading from the URL into your app. Thanks for tuning in once again!
If you have more details or questions, you can reply to the received confirmation email.
Back to Home
Be the first to comment.