Always use SDWebImage because it handles all the things like cache. For Single Image Selection use SDWebImage for showing/downloading and uploading url- For Showing Image Example : self .img_profile.sd_setImage(with: URL(string: self .orgDetails.logo!),placeholderImage: UIImage.init(named: "default_icon_iPhone_Logo.png"), completed: nil ) For uploading image: Alamofire.upload(multipartFormData: { (multipartFormData) in if let data = imageData{ let keyName = key //mark:Random number generator for image different Name because there may be problem from backend which will replace your image if image name is same. let uuid = UUID().uuidString let imageName = ("image1" + uuid + ".png") multipartFormData.append(data, withName: keyName, fileName: imageName, mimeType: "image/png&quo